Как указать параметры времени жизни в связанном типе?
У меня есть эта черта и простая структура:
use std::path::{Path, PathBuf};
trait Foo {
type Item: AsRef<Path>;
type Iter: Iterator<Item = Self::Item>;
fn get(&self) -> Self::Iter;
}
struct Bar {
v: Vec<PathBuf>,
}
Я хотел бы реализоватьFoo
черта дляBar
:
impl Foo for Bar {
type Item = PathBuf;
type Iter = std::slice::Iter<PathBuf>;
fn get(&self) -> Self::Iter {
self.v.iter()
}
}
Однако я получаю эту ошибку:
error[E0106]: missing lifetime specifier
--> src/main.rs:16:17
|
16 | type Iter = std::slice::Iter<PathBuf>;
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected lifetime parameter
Я не нашел способа указать время жизни внутри этого связанного типа. В частности, я хочу выразить, что итератор не может пережитьself
продолжительность жизни.
Как мне изменитьFoo
черта, илиBar
черта реализации, чтобы сделать эту работу?