再问一个问题, 这个怎么搞 ?
只是想 print vals 长度而已 , 编译不了
use std::sync::mpsc;
use std::thread;
use std::time::Duration;
fn main() {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
let vals = vec![
String::from("hi"),
String::from("from"),
String::from("the"),
String::from("thread"),
];
for val in vals { // vals moved,
tx.send(val).unwrap();
//println!("Len in vec {:?}", vals.len()); // so invalide here!!
thread::sleep(Duration::from_secs(1));
}
});
for received in rx {
println!("Got: {}", received);
}
}
【 在 ilovecpp 的大作中提到: 】
: 不是!Send不能穿越await,而是!Send的状态跨过await,会使得async fn变成!Send。
: 一个async fn是!Send本身没有任何问题,只是不满足tokio::spawn的要求。
: 就Rc而言,的确理论上可以在不同线程间传递,只要保证不同时访问即可。
: ...................
--
FROM 42.234.95.*