ExpertiDict

Rust · Avançado · Inglês · Técnico

unsafe trait

/ʌnˈseɪf treɪt/substantivo

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.

Veja também

Todos os termos de Rust