Rust · Avançado · Português · Técnico
ordem de drop
Regra que define quando os valores são liberados: variáveis locais em ordem inversa da declaração, e campos de uma struct na ordem em que foram declarados.
Onde usar
Importa com guards de Mutex, conexões e arquivos que dependem de outro recurso. Temporários no meio de uma expressão morrem no fim da instrução.
Em código
struct D(&'static str);
impl Drop for D {
fn drop(&mut self) {
println!("{}", self.0);
}
}
let _a = D("a");
let _b = D("b"); // imprime b, depois aExemplos
A ordem de drop me pegou: o guard morreu depois do esperado.
Declare a conexão primeiro, pela ordem de drop.
Cuidado
Não é a ordem do último uso: o fim do escopo manda, mesmo que o valor já não seja mais lido.