ExpertiDict

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

ordem de drop

/ˈoʁ.dẽ d͡ʒi ˈdɾɔp/substantivo

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 a

Exemplos

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.

Veja também

Todos os termos de Rust