私はこの特性とシンプルな構造を有する:私はBar
ためFoo
形質を実装したいと思います関連タイプで寿命パラメータを指定する方法を教えてください。
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>,
}
を:
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
形質導入をどのように変更する必要がありますか?
「fooget」のような機能の観点から負担が少ないと思われるので、最初のソリューションを使用することにしました。この形質はまた、第2の解決策により明白である。 – mbrt