Rust · Intermediário · Português · Técnico
elisão de lifetimes
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 strExemplos
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