@@ -1016,27 +1016,115 @@ impl fmt::Debug for Stdio {
10161016
10171017#[ stable( feature = "stdio_from" ,  since = "1.20.0" ) ]  
10181018impl  From < ChildStdin >  for  Stdio  { 
1019+     /// Converts a `ChildStdin` into a `Stdio` 
1020+      /// 
1021+      /// # Examples 
1022+      /// 
1023+      /// `ChildStdin` will be converted to `Stdio` using `Stdio::from` under the hood. 
1024+      /// 
1025+      /// ```rust 
1026+      /// use std::process::{Command, Stdio}; 
1027+      /// 
1028+      /// let reverse = Command::new("rev") 
1029+      ///     .stdin(Stdio::piped()) 
1030+      ///     .spawn() 
1031+      ///     .expect("failed reverse command"); 
1032+      /// 
1033+      /// let _echo = Command::new("echo") 
1034+      ///     .arg("Hello, world!") 
1035+      ///     .stdout(reverse.stdin.unwrap()) // Converted into a Stdio here 
1036+      ///     .output() 
1037+      ///     .expect("failed echo command"); 
1038+      /// 
1039+      /// // "!dlrow ,olleH" echoed to console 
1040+      /// ``` 
10191041     fn  from ( child :  ChildStdin )  -> Stdio  { 
10201042        Stdio :: from_inner ( child. into_inner ( ) . into ( ) ) 
10211043    } 
10221044} 
10231045
10241046#[ stable( feature = "stdio_from" ,  since = "1.20.0" ) ]  
10251047impl  From < ChildStdout >  for  Stdio  { 
1048+     /// Converts a `ChildStdout` into a `Stdio` 
1049+      /// 
1050+      /// # Examples 
1051+      /// 
1052+      /// `ChildStdout` will be converted to `Stdio` using `Stdio::from` under the hood. 
1053+      /// 
1054+      /// ```rust 
1055+      /// use std::process::{Command, Stdio}; 
1056+      /// 
1057+      /// let hello = Command::new("echo") 
1058+      ///     .arg("Hello, world!") 
1059+      ///     .stdout(Stdio::piped()) 
1060+      ///     .spawn() 
1061+      ///     .expect("failed echo command"); 
1062+      /// 
1063+      /// let reverse = Command::new("rev") 
1064+      ///     .stdin(hello.stdout.unwrap())  // Converted into a Stdio here 
1065+      ///     .output() 
1066+      ///     .expect("failed reverse command"); 
1067+      /// 
1068+      /// assert_eq!(reverse.stdout, b"!dlrow ,olleH\n"); 
1069+      /// ``` 
10261070     fn  from ( child :  ChildStdout )  -> Stdio  { 
10271071        Stdio :: from_inner ( child. into_inner ( ) . into ( ) ) 
10281072    } 
10291073} 
10301074
10311075#[ stable( feature = "stdio_from" ,  since = "1.20.0" ) ]  
10321076impl  From < ChildStderr >  for  Stdio  { 
1077+     /// Converts a `ChildStderr` into a `Stdio` 
1078+      /// 
1079+      /// # Examples 
1080+      /// 
1081+      /// ```rust,no_run 
1082+      /// use std::process::{Command, Stdio}; 
1083+      /// 
1084+      /// let reverse = Command::new("rev") 
1085+      ///     .arg("non_existing_file.txt") 
1086+      ///     .stderr(Stdio::piped()) 
1087+      ///     .spawn() 
1088+      ///     .expect("failed reverse command"); 
1089+      /// 
1090+      /// let cat = Command::new("cat") 
1091+      ///     .arg("-") 
1092+      ///     .stdin(reverse.stderr.unwrap()) // Converted into a Stdio here 
1093+      ///     .output() 
1094+      ///     .expect("failed echo command"); 
1095+      /// 
1096+      /// assert_eq!( 
1097+      ///     String::from_utf8_lossy(&cat.stdout), 
1098+      ///     "rev: cannot open non_existing_file.txt: No such file or directory\n" 
1099+      /// ); 
1100+      /// ``` 
10331101     fn  from ( child :  ChildStderr )  -> Stdio  { 
10341102        Stdio :: from_inner ( child. into_inner ( ) . into ( ) ) 
10351103    } 
10361104} 
10371105
10381106#[ stable( feature = "stdio_from" ,  since = "1.20.0" ) ]  
10391107impl  From < fs:: File >  for  Stdio  { 
1108+     /// Converts a `File` into a `Stdio` 
1109+      /// 
1110+      /// # Examples 
1111+      /// 
1112+      /// `File` will be converted to `Stdio` using `Stdio::from` under the hood. 
1113+      /// 
1114+      /// ```rust,no_run 
1115+      /// use std::fs::File; 
1116+      /// use std::process::Command; 
1117+      /// 
1118+      /// // With the `foo.txt` file containing `Hello, world!" 
1119+      /// let file = File::open("foo.txt").unwrap(); 
1120+      /// 
1121+      /// let reverse = Command::new("rev") 
1122+      ///     .stdin(file)  // Implicit File convertion into a Stdio 
1123+      ///     .output() 
1124+      ///     .expect("failed reverse command"); 
1125+      /// 
1126+      /// assert_eq!(reverse.stdout, b"!dlrow ,olleH"); 
1127+      /// ``` 
10401128     fn  from ( file :  fs:: File )  -> Stdio  { 
10411129        Stdio :: from_inner ( file. into_inner ( ) . into ( ) ) 
10421130    } 
0 commit comments