Qual é a diferença entre '& self' e '&' a self '?
Recentemente, tive um erro que foi simplesmente resolvido alterando
impl<'a> Foo<'a> {
fn foo(&'a self, path: &str) -> Boo<'a> { /* */ }
}
para
impl<'a> Foo<'a> {
fn foo(&self, path: &str) -> Boo { /* */ }
}
o que não fazia sentido de acordo com meu entendimento, pois eu pensava que a segunda versão é exatamente a mesma que a primeira com elisão vitalícia aplicada.
No caso de introduzirmos uma nova vida útil para o método, este parece ser o caso, de acordo com este exemplo donomicon.
fn get_mut(&mut self) -> &mut T; // elided
fn get_mut<'a>(&'a mut self) -> &'a mut T; // expanded
Então, quais são as diferenças entre este e meu primeiro código cortado.