Rust · Intermediário · Inglês · Técnico
scoped thread
Thread criada dentro de std::thread::scope, que garante terminar antes do fim do escopo. Por isso a closure pode emprestar variáveis locais, sem Arc nem move.
Onde usar
Resolve o erro 'closure may outlive the current function' em paralelismo local. Está estável desde o Rust 1.63.
Em código
let mut v = vec![1, 2, 3];
let total = std::thread::scope(|s| {
let h = s.spawn(|| v.iter().sum::<i32>());
h.join().unwrap()
});
v.push(total);
println!("{:?}", v);Exemplos
Use a scoped thread to borrow the slice.
Use uma scoped thread para emprestar o slice.
The scope joins every thread before returning.
O scope faz join de toda thread antes de retornar.
Cuidado
Não confunda com thread::spawn comum, que exige 'static: só a versão com escopo pode emprestar dados locais.
Sinônimos
thread com escopo