summaryrefslogtreecommitdiffstats
path: root/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc/book/listings/ch16-fearless-concurrency/listing-16-09')
-rw-r--r--src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/output.txt16
-rw-r--r--src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/src/main.rs15
4 files changed, 43 insertions, 0 deletions
diff --git a/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.lock b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.lock
new file mode 100644
index 000000000..55d2252da
--- /dev/null
+++ b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "message-passing"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.toml b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.toml
new file mode 100644
index 000000000..24bd2ee7b
--- /dev/null
+++ b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "message-passing"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/output.txt b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/output.txt
new file mode 100644
index 000000000..0795a3a4f
--- /dev/null
+++ b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/output.txt
@@ -0,0 +1,16 @@
+$ cargo run
+ Compiling message-passing v0.1.0 (file:///projects/message-passing)
+error[E0382]: borrow of moved value: `val`
+ --> src/main.rs:10:31
+ |
+8 | let val = String::from("hi");
+ | --- move occurs because `val` has type `String`, which does not implement the `Copy` trait
+9 | tx.send(val).unwrap();
+ | --- value moved here
+10 | println!("val is {}", val);
+ | ^^^ value borrowed here after move
+ |
+ = note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+For more information about this error, try `rustc --explain E0382`.
+error: could not compile `message-passing` due to previous error
diff --git a/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/src/main.rs b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/src/main.rs
new file mode 100644
index 000000000..98a8129ab
--- /dev/null
+++ b/src/doc/book/listings/ch16-fearless-concurrency/listing-16-09/src/main.rs
@@ -0,0 +1,15 @@
+use std::sync::mpsc;
+use std::thread;
+
+fn main() {
+ let (tx, rx) = mpsc::channel();
+
+ thread::spawn(move || {
+ let val = String::from("hi");
+ tx.send(val).unwrap();
+ println!("val is {}", val);
+ });
+
+ let received = rx.recv().unwrap();
+ println!("Got: {}", received);
+}