use std::thread;
let nums1 = vec![1, 2, 3];
let handle = thread::spawn(move || {
println!("nums1 is {:?}", nums1);
});
//nums1.push(4); <-Error
handle.join().unwrap();
let mut nums2 = vec![1, 2, 3];
std::thread::scope(|s| {
s.spawn(|| {
println!("nums2 is {:?}", nums2);
});
});
nums2.push(4);
println!("nums2 is {:?}", nums2);
| Изпользуйте ключевое слово "move" чтобы указать, что переменная передается в дополнительный поток и не будет использоваться в основном. std::thread::scope обеспечивает необходимую гарантию того, что любые порождённые потоки завершатся до своего возвращения, что позволяет безопасно заимствовать данные. |