Я пытаюсь вызвать join для вектора JoinHandle
, используя for_each
. Я получаю эту ошибку:
let mut threads = vec![];
...
threads.iter().for_each(|h| h.join().unwrap());
error[E0507]: cannot move out of `*h` which is behind a shared reference
--> src/main.rs:41:33
|
41 | threads.iter().for_each(|h| h.join().unwrap());
| ^ move occurs because `*h` has type `std::thread::JoinHandle<()>`, which does not implement the `Copy` trait
Насколько я могу сказать, это должно работать нормально, если бы мне дали ссылки на JoinHandle
с for_each
, но, похоже, я не. Следующий код работает нормально:
for h in threads {
h.join().unwrap();
}
Как мне сделать то же самое, но с использованием for_each
или чего-то подобного?