Rust · Avançado · Inglês · Técnico
ManuallyDrop
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