ExpertiDict

Rust · Intermediário · Português · Técnico

elisão de lifetimes

/e.li.ˈzɐ̃w̃ d͡ʒi ˈlaɪf.taɪms/substantivo

Regras que deixam o compilador deduzir lifetimes na assinatura de funções, dispensando a anotação explícita nos casos comuns, como uma única referência de entrada.

Onde usar

Explica por que a maioria das funções com referências não tem 'a. Quando há duas entradas e uma saída por referência, a elisão não decide e o compilador pede anotação.

Em código

// o compilador deduz o lifetime
fn primeira(s: &str) -> &str {
  s.split(' ').next().unwrap_or(s)
}
// equivale a:
// fn primeira<'a>(s: &'a str) -> &'a str

Exemplos

Aqui a elisão de lifetimes resolve, não precisa do 'a.

Com duas referências de entrada, a elisão não ajuda.

Cuidado

Não é inferência a partir do corpo: o compilador só olha a assinatura da função.

Sinônimos

lifetime elision

Veja também

Todos os termos de Rust