about summary refs log tree commit diff
path: root/library/std/src/os/unix/process.rs
diff options
context:
space:
mode:
authorDan Gohman <dev@sunfishcode.online>2021-08-17 16:28:00 -0700
committerDan Gohman <dev@sunfishcode.online>2021-08-19 12:02:41 -0700
commit187ee5c824a72ad5a23b3b46d6b747ae27de2d18 (patch)
tree9f14176735be745f8087f5cc65514592ce3bb003 /library/std/src/os/unix/process.rs
parent6f872880b46d497166dfd33547c7b65125e35a26 (diff)
downloadrust-187ee5c824a72ad5a23b3b46d6b747ae27de2d18.tar.gz
rust-187ee5c824a72ad5a23b3b46d6b747ae27de2d18.zip
Add I/O safety trait impls for process::Stdio and process::Child.
Diffstat (limited to 'library/std/src/os/unix/process.rs')
-rw-r--r--library/std/src/os/unix/process.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/library/std/src/os/unix/process.rs b/library/std/src/os/unix/process.rs
index 1e794842e3c..f2e8832cc92 100644
--- a/library/std/src/os/unix/process.rs
+++ b/library/std/src/os/unix/process.rs
@@ -4,7 +4,7 @@
 
 use crate::ffi::OsStr;
 use crate::io;
-use crate::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
+use crate::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
 use crate::process;
 use crate::sealed::Sealed;
 use crate::sys;
@@ -327,6 +327,16 @@ impl FromRawFd for process::Stdio {
     }
 }
 
+#[unstable(feature = "io_safety", issue = "87074")]
+impl From<OwnedFd> for process::Stdio {
+    #[inline]
+    fn from(fd: OwnedFd) -> process::Stdio {
+        let fd = sys::fd::FileDesc::from_inner(fd);
+        let io = sys::process::Stdio::Fd(fd);
+        process::Stdio::from_inner(io)
+    }
+}
+
 #[stable(feature = "process_extensions", since = "1.2.0")]
 impl AsRawFd for process::ChildStdin {
     #[inline]