ExpertiDict

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

non-lexical lifetimes

/nɑːn ˈlɛksɪkəl ˈlaɪftaɪmz/substantivo

Regra do compilador, ativa desde a edição 2018, em que um empréstimo termina no último uso da referência, e não no fim do bloco onde ela foi declarada.

Onde usar

Explica por que código que antes dava erro de borrow hoje compila. É o motivo de poder alterar um vetor logo depois do último uso de uma referência a ele.

Em código

let mut v = vec![1, 2, 3];
let primeiro = &v[0];
println!("{primeiro}");
// primeiro não é mais usado
v.push(4);

Exemplos

NLL lets this compile because the borrow ends early.

O NLL deixa isso compilar porque o empréstimo acaba antes.

That error disappeared after non-lexical lifetimes.

Esse erro sumiu depois dos non-lexical lifetimes.

Cuidado

Não vale quando o valor emprestado tem Drop que usa a referência: nesse caso o destrutor conta como um uso no fim do escopo.

Sinônimos

NLL

Veja também

Todos os termos de Rust