about summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/wpcarro/scratch/rust/src/main.rs8
-rw-r--r--users/wpcarro/scratch/rust/src/stdin/mod.rs22
2 files changed, 24 insertions, 6 deletions
diff --git a/users/wpcarro/scratch/rust/src/main.rs b/users/wpcarro/scratch/rust/src/main.rs
index da9e3d3c637c..185e7236c5f6 100644
--- a/users/wpcarro/scratch/rust/src/main.rs
+++ b/users/wpcarro/scratch/rust/src/main.rs
@@ -3,16 +3,12 @@ use serde_json::{json, Value};
 
 mod display;
 mod json;
+mod stdin;
 
 ////////////////////////////////////////////////////////////////////////////////
 // Main
 ////////////////////////////////////////////////////////////////////////////////
 
 fn main() {
-    let john: display::Person = display::Person {
-        fname: "John".to_string(),
-        lname: "Cleese".to_string(),
-        age: 82,
-    };
-    println!("Person: {}", john)
+    stdin::example();
 }
diff --git a/users/wpcarro/scratch/rust/src/stdin/mod.rs b/users/wpcarro/scratch/rust/src/stdin/mod.rs
new file mode 100644
index 000000000000..4be95afa4547
--- /dev/null
+++ b/users/wpcarro/scratch/rust/src/stdin/mod.rs
@@ -0,0 +1,22 @@
+use std::io::Write;
+use std::process::{Command, Stdio};
+
+// Example of piping-in a string defined in Rust to a shell command.
+pub fn example() {
+    let input = "Hello, world!";
+
+    let mut cat = Command::new("cat")
+        .stdin(Stdio::piped())
+        .spawn()
+        .ok()
+        .unwrap();
+
+    cat.stdin
+        .take()
+        .unwrap()
+        .write_all(&input.as_bytes())
+        .unwrap();
+
+    let output = cat.wait_with_output().unwrap();
+    println!("{}", String::from_utf8_lossy(&output.stdout));
+}