Rust · Intermediário · Inglês · Técnico
Sync
Trait marcador que indica que referências &T ao tipo podem ser compartilhadas entre threads com segurança. T é Sync exatamente quando &T é Send.
Onde usar
Aparece em erros como 'cannot be shared between threads safely'. Tipos com mutabilidade interior sem trava, como Cell e RefCell, não são Sync.
Em código
use std::cell::Cell;
fn so_sync<T: Sync>(_t: &T) {}
so_sync(&5);
so_sync(&String::new());
// so_sync(&Cell::new(1)); Cell não é SyncExemplos
RefCell is not Sync, wrap it in a Mutex.
RefCell não é Sync, envolva em um Mutex.
Static data must be Sync.
Dados static precisam ser Sync.
Cuidado
Não confunda com o sync de sincronização: aqui é uma propriedade do tipo, não uma operação.
Antônimos
Send