Я применяю замыкание к итератору и хочу использовать стабильный, поэтому хочу вернуть упакованный Iterator
. Очевидный способ сделать это заключается в следующем:
struct Foo;
fn into_iterator(myvec: &Vec<Foo>) -> Box<dyn Iterator<Item = &Foo>> {
Box::new(myvec.iter())
}
Это не помогло, потому что контролер заимствований не может определить соответствующий срок жизни.
После некоторых исследований я обнаружил, как правильно вернуть итератор (или любую другую черту)?, что привело меня к добавлению + 'a
:
fn into_iterator<'a>(myvec: &'a Vec<Foo>) -> Box<dyn Iterator<Item = &'a Foo> + 'a> {
Box::new(myvec.iter())
}
Но я не понимаю,
- Что это делает
- А зачем это нужно тут