Files
simple-rust-tests/__std/misc/src/bin/channel_test.rs
2024-01-07 18:26:09 +08:00

31 lines
783 B
Rust

use std::sync::mpsc::channel;
use std::thread;
fn main() {
let (sender, receiver) = channel::<Option<i32>>();
let h = thread::spawn(move || {
loop {
match receiver.recv() {
Ok(o) => match o {
None => {
println!("The end!");
return;
}
Some(i) => println!("Received: {}", i),
}
Err(e) => { // when sender closed
println!("Error: {}", e);
return;
}
}
}
});
sender.send(Some(1)).unwrap();
sender.send(Some(2)).unwrap();
sender.send(Some(3)).unwrap();
sender.send(None).unwrap();
h.join().unwrap();
}