Вот код:
use std::thread;
use std::sync::mpsc;
fn main() {
//spawn threads
let (tx, rx) = mpsc::channel();
for mut i in 0 .. 10 {
let txc = tx.clone(); //clone from the main sender
thread::spawn( move || {
i += 20;
println!("Sending: {}", i);
txc.send(i).unwrap_or_else(|e| {
eprintln!("{}", e);
});
});
}
for received in rx {
println!("Received: {}", received);
}
}
Код выполняется успешно, однако он зависает, и процесс никогда не завершается в конце! Я подумал, что это может быть связано с закрытием концов канала, и я попытался сбросить tx.drop()
и rx.drop()
, из-за чего компилятор не допустил меня к этому.
Что я здесь не так делаю?