diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/process.rs | 41 | ||||
| -rw-r--r-- | src/libstd/sys/redox/process.rs | 12 | ||||
| -rw-r--r-- | src/libstd/sys/unix/process/process_common.rs | 12 | ||||
| -rw-r--r-- | src/libstd/sys/windows/process.rs | 12 |
4 files changed, 71 insertions, 6 deletions
diff --git a/src/libstd/process.rs b/src/libstd/process.rs index da64704efba..4c6d88c0ae8 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -59,6 +59,7 @@ use io::prelude::*; use ffi::OsStr; use fmt; +use fs; use io; use path::Path; use str; @@ -544,8 +545,8 @@ impl Command { /// .expect("ls command failed to start"); /// ``` #[stable(feature = "process", since = "1.0.0")] - pub fn stdin(&mut self, cfg: Stdio) -> &mut Command { - self.inner.stdin(cfg.0); + pub fn stdin<T: Into<Stdio>>(&mut self, cfg: T) -> &mut Command { + self.inner.stdin(cfg.into().0); self } @@ -564,8 +565,8 @@ impl Command { /// .expect("ls command failed to start"); /// ``` #[stable(feature = "process", since = "1.0.0")] - pub fn stdout(&mut self, cfg: Stdio) -> &mut Command { - self.inner.stdout(cfg.0); + pub fn stdout<T: Into<Stdio>>(&mut self, cfg: T) -> &mut Command { + self.inner.stdout(cfg.into().0); self } @@ -584,8 +585,8 @@ impl Command { /// .expect("ls command failed to start"); /// ``` #[stable(feature = "process", since = "1.0.0")] - pub fn stderr(&mut self, cfg: Stdio) -> &mut Command { - self.inner.stderr(cfg.0); + pub fn stderr<T: Into<Stdio>>(&mut self, cfg: T) -> &mut Command { + self.inner.stderr(cfg.into().0); self } @@ -753,6 +754,34 @@ impl fmt::Debug for Stdio { } } +#[stable(feature = "stdio_from", since = "1.20.0")] +impl From<ChildStdin> for Stdio { + fn from(child: ChildStdin) -> Stdio { + Stdio::from_inner(child.into_inner().into()) + } +} + +#[stable(feature = "stdio_from", since = "1.20.0")] +impl From<ChildStdout> for Stdio { + fn from(child: ChildStdout) -> Stdio { + Stdio::from_inner(child.into_inner().into()) + } +} + +#[stable(feature = "stdio_from", since = "1.20.0")] +impl From<ChildStderr> for Stdio { + fn from(child: ChildStderr) -> Stdio { + Stdio::from_inner(child.into_inner().into()) + } +} + +#[stable(feature = "stdio_from", since = "1.20.0")] +impl From<fs::File> for Stdio { + fn from(file: fs::File) -> Stdio { + Stdio::from_inner(file.into_inner().into()) + } +} + /// Describes the result of a process after it has terminated. /// /// This `struct` is used to represent the exit status of a child process. diff --git a/src/libstd/sys/redox/process.rs b/src/libstd/sys/redox/process.rs index 95e9438cd71..62d873d257d 100644 --- a/src/libstd/sys/redox/process.rs +++ b/src/libstd/sys/redox/process.rs @@ -400,6 +400,18 @@ impl Stdio { } } +impl From<AnonPipe> for Stdio { + fn from(pipe: AnonPipe) -> Stdio { + Stdio::Fd(pipe.into_fd()) + } +} + +impl From<File> for Stdio { + fn from(file: File) -> Stdio { + Stdio::Fd(file.into_fd()) + } +} + impl ChildStdio { fn fd(&self) -> Option<usize> { match *self { diff --git a/src/libstd/sys/unix/process/process_common.rs b/src/libstd/sys/unix/process/process_common.rs index e9f41009064..32fcee1e461 100644 --- a/src/libstd/sys/unix/process/process_common.rs +++ b/src/libstd/sys/unix/process/process_common.rs @@ -315,6 +315,18 @@ impl Stdio { } } +impl From<AnonPipe> for Stdio { + fn from(pipe: AnonPipe) -> Stdio { + Stdio::Fd(pipe.into_fd()) + } +} + +impl From<File> for Stdio { + fn from(file: File) -> Stdio { + Stdio::Fd(file.into_fd()) + } +} + impl ChildStdio { pub fn fd(&self) -> Option<c_int> { match *self { diff --git a/src/libstd/sys/windows/process.rs b/src/libstd/sys/windows/process.rs index 0bd0ce73138..0d1766d5aec 100644 --- a/src/libstd/sys/windows/process.rs +++ b/src/libstd/sys/windows/process.rs @@ -306,6 +306,18 @@ impl Stdio { } } +impl From<AnonPipe> for Stdio { + fn from(pipe: AnonPipe) -> Stdio { + Stdio::Handle(pipe.into_handle()) + } +} + +impl From<File> for Stdio { + fn from(file: File) -> Stdio { + Stdio::Handle(file.into_handle()) + } +} + //////////////////////////////////////////////////////////////////////////////// // Processes //////////////////////////////////////////////////////////////////////////////// |
