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