From 6e9b300de3409b3bc4a17cf5b845346c918dafd7 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 22 Feb 2021 19:58:29 -0500 Subject: make child an associated type --- src/command.rs | 6 ++++-- src/command/async_process.rs | 6 ++++-- src/command/std.rs | 6 ++++-- src/command/tokio.rs | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/command.rs b/src/command.rs index ca7e4e3..a5df5ed 100644 --- a/src/command.rs +++ b/src/command.rs @@ -9,11 +9,13 @@ mod async_process; #[cfg(feature = "tokio")] mod tokio; -pub trait Command { +pub trait Command { + type Child; + fn spawn_pty( &mut self, size: Option<&crate::pty::Size>, - ) -> Result>; + ) -> Result>; } pub struct Child { diff --git a/src/command/async_process.rs b/src/command/async_process.rs index c712289..687fbe4 100644 --- a/src/command/async_process.rs +++ b/src/command/async_process.rs @@ -3,11 +3,13 @@ use crate::error::*; use async_process::unix::CommandExt as _; use std::os::unix::io::{AsRawFd as _, FromRawFd as _}; -impl super::Command for async_process::Command { +impl super::Command for async_process::Command { + type Child = async_process::Child; + fn spawn_pty( &mut self, size: Option<&crate::pty::Size>, - ) -> Result> { + ) -> Result> { let (pty, pts, stdin, stdout, stderr) = super::setup_pty(size)?; let pt_fd = pty.pt().as_raw_fd(); diff --git a/src/command/std.rs b/src/command/std.rs index d544b83..0f3bef1 100644 --- a/src/command/std.rs +++ b/src/command/std.rs @@ -3,11 +3,13 @@ use crate::error::*; use std::os::unix::io::{AsRawFd as _, FromRawFd as _}; use std::os::unix::process::CommandExt as _; -impl super::Command for std::process::Command { +impl super::Command for std::process::Command { + type Child = std::process::Child; + fn spawn_pty( &mut self, size: Option<&crate::pty::Size>, - ) -> Result> { + ) -> Result> { let (pty, pts, stdin, stdout, stderr) = super::setup_pty(size)?; let pt_fd = pty.pt().as_raw_fd(); diff --git a/src/command/tokio.rs b/src/command/tokio.rs index f29c247..54bfefb 100644 --- a/src/command/tokio.rs +++ b/src/command/tokio.rs @@ -2,11 +2,13 @@ use crate::error::*; use std::os::unix::io::{AsRawFd as _, FromRawFd as _}; -impl super::Command for tokio::process::Command { +impl super::Command for tokio::process::Command { + type Child = tokio::process::Child; + fn spawn_pty( &mut self, size: Option<&crate::pty::Size>, - ) -> Result> { + ) -> Result> { let (pty, pts, stdin, stdout, stderr) = super::setup_pty(size)?; let pt_fd = pty.pt().as_raw_fd(); -- cgit v1.2.3