ExpertiDict

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

ManuallyDrop

/ˈmænjuəli drɑːp/substantivo

Wrapper que impede o compilador de chamar o Drop do valor automaticamente. O destrutor só roda se você pedir, com ManuallyDrop::drop, que é unsafe.

Onde usar

Aparece em código de baixo nível, como containers e FFI, quando se controla a ordem de liberação ou se entrega a posse a código externo.

Em código

use std::mem::ManuallyDrop;
let mut s = ManuallyDrop::new(String::new());
s.push('a'); // via Deref
unsafe {
  ManuallyDrop::drop(&mut s);
}

Exemplos

Wrap it in ManuallyDrop to control the order.

Envolva em ManuallyDrop para controlar a ordem.

ManuallyDrop::drop is unsafe for a reason.

O ManuallyDrop::drop é unsafe por um motivo.

Cuidado

Esquecer de liberar é seguro, mas vaza o recurso; o perigo real é liberar duas vezes o mesmo valor.

Antônimos

Drop

Veja também

Todos os termos de Rust