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.

questionAnswers(1)

yourAnswerToTheQuestion