Rust · Avançado · Inglês · Técnico
unsafe trait
Trait cuja implementação exige uma garantia que o compilador não confere. Quem implementa precisa escrever unsafe impl, como em Send e Sync.
Onde usar
Aparece em unsafe impl Send for MeuTipo {}. O unsafe é uma promessa sua, e o código unsafe de outros pode depender dela.
Em código
struct Ptr(*mut u8);
// promessa nossa: seguro entre threads
unsafe impl Send for Ptr {}
unsafe impl Sync for Ptr {}
unsafe trait Pod {}
unsafe impl Pod for u32 {}Exemplos
Send is an unsafe trait, you promise it's valid.
Send é um unsafe trait, você promete que é válido.
This needs an unsafe impl for the raw pointer wrapper.
Isso precisa de um unsafe impl para o wrapper do ponteiro bruto.
Cuidado
O unsafe fica na declaração do trait e na implementação, não nos usos: quem só chama os métodos ou usa um bound não precisa de unsafe.