Por que adicionar uma vida útil a uma característica com o operador mais (Iterador <Item = & Foo> + 'a) necessário?

Estou aplicando um fechamento no iterador e quero usar o stable, então quero retornar uma caixaIterator. A maneira óbvia de fazer isso é a seguinte:

struct Foo;

fn into_iterator(myvec: &Vec<Foo>) -> Box<Iterator<Item = &Foo>> {
    Box::new(myvec.iter())
}

Isso falha porque o verificador de empréstimo não pode inferir a vida útil apropriada.

Após algumas pesquisas, descobriManeira correta de retornar um iterador?, o que me levou a adicionar+ 'a:

fn into_iterator<'a>(myvec: &'a Vec<Foo>) -> Box<Iterator<Item = &'a Foo> + 'a> {
    Box::new(myvec.iter())
}

Mas eu não entendo

O que isso fazE por que é necessário aqui

questionAnswers(1)

yourAnswerToTheQuestion