about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Berlin <xkr47@outerspace.dyndns.org>2020-07-09 21:18:06 +0300
committerMark Rousskov <mark.simulacrum@gmail.com>2020-08-14 08:25:45 -0400
commit90e4c905d352dc5c5de71af717200c879fec88f7 (patch)
tree5a8255d0817d27b0bf8301919dea850d5bf3a742
parent81dc88f88f92ba8ad7465f9cba10c12d3a7b70f1 (diff)
downloadrust-90e4c905d352dc5c5de71af717200c879fec88f7.tar.gz
rust-90e4c905d352dc5c5de71af717200c879fec88f7.zip
Improve documentation on process::Child.std* fields
As a relative beginner, it took a while for me to figure out I could just steal the references to avoid partially moving the child and thus retain ability to call functions on it (and store it in structs etc).
-rw-r--r--library/std/src/process.rs27
1 files changed, 24 insertions, 3 deletions
diff --git a/library/std/src/process.rs b/library/std/src/process.rs
index 4ba1940fd0e..409a9450186 100644
--- a/library/std/src/process.rs
+++ b/library/std/src/process.rs
@@ -170,17 +170,38 @@ pub struct Child {
     handle: imp::Process,
 
     /// The handle for writing to the child's standard input (stdin), if it has
-    /// been captured.
+    /// been captured. To avoid partially moving
+    /// the `child` and thus blocking yourself from calling
+    /// functions on `child` while using `stdin`,
+    /// you might find it helpful:
+    ///
+    /// ```compile_fail,E0425
+    /// let stdin = child.stdin.take().unwrap();
+    /// ```
     #[stable(feature = "process", since = "1.0.0")]
     pub stdin: Option<ChildStdin>,
 
     /// The handle for reading from the child's standard output (stdout), if it
-    /// has been captured.
+    /// has been captured. You might find it helpful to do
+    ///
+    /// ```compile_fail,E0425
+    /// let stdout = child.stdout.take().unwrap();
+    /// ```
+    ///
+    /// to avoid partially moving the `child` and thus blocking yourself from calling
+    /// functions on `child` while using `stdout`.
     #[stable(feature = "process", since = "1.0.0")]
     pub stdout: Option<ChildStdout>,
 
     /// The handle for reading from the child's standard error (stderr), if it
-    /// has been captured.
+    /// has been captured. You might find it helpful to do
+    ///
+    /// ```compile_fail,E0425
+    /// let stderr = child.stderr.take().unwrap();
+    /// ```
+    ///
+    /// to avoid partially moving the `child` and thus blocking yourself from calling
+    /// functions on `child` while using `stderr`.
     #[stable(feature = "process", since = "1.0.0")]
     pub stderr: Option<ChildStderr>,
 }