ExpertiDict

Rust · Intermediário · Inglês · Técnico

scoped thread

/skoʊpt θrɛd/substantivo

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

Veja também

Todos os termos de Rust