fn main() { let (tx, rx) = std::sync::mpsc::channel(); let mut v = 5; let thread_body = move || { for v in rx { println!("The value is {}", v); return; std::thread::sleep(std::time::Duration::from_millis(100)); } }; let h = std::thread::spawn(thread_body); println!("Main thread, here!"); let res = tx.send(v); if let Err(e) = res { println!("Error {}", e); } std::thread::sleep(std::time::Duration::from_millis(500)); v = 6; let res = tx.send(v); if let Err(e) = res { println!("Error {}", e); } drop(tx); h.join(); }