ExpertiDict

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

Send

/sɛnd/substantivo

Trait marcador que indica que um valor pode ser movido para outra thread com segurança. É automático para a maioria dos tipos, mas Rc e ponteiros brutos não o têm.

Onde usar

Aparece como bound em thread::spawn e tokio::spawn e no erro 'cannot be sent between threads safely'. Se um campo não é Send, a struct inteira também não é.

Em código

use std::sync::Arc;
let a = Arc::new(5);
std::thread::spawn(move || {
  println!("{a}"); // ok: Arc é Send
});
// com Rc, o spawn não compilaria

Exemplos

Rc is not Send, use Arc instead.

Rc não é Send, use Arc.

The future isn't Send because of that guard.

A future não é Send por causa desse guard.

Cuidado

Send não significa seguro para acesso compartilhado; isso é Sync. Um tipo pode ser Send sem ser Sync, como o Cell.

Antônimos

Sync

Veja também

Todos os termos de Rust