私はいくつかの内部データのイテレータを返す関数を含む特性を作成しようとしています。これは異なる構造体で実装できます。 Rustに関連する型の正しい型を推測させる方法はありますか?
std::iter::Map<std::slice::Iter<'_, u32>, [[email protected]:45:37: 45:43]>
があります:私はそれがあることがわかり、エラーメッセージから(型の不一致を経て作成された) - しかし
trait WrapperTrait {
type WrapperIterator: Iterator<Item=u32>;
fn iter(&self) -> Self::WrapperIterator;
}
struct Wrapper {
data: Vec<u32>
}
impl WrapperTrait for Wrapper {
type WrapperIterator = ...;
fn iter(&self) -> Self::WrapperIterator {
return self.data.iter().map(|&x| x);
}
}
、WrapperIterator
用タイプはかなり複雑で次のように最小限の例です。 RustにWrapperIterator
の正しいタイプを推測させる方法?
イディオムラストは、関数本体が 'self.data.iter()。map(|&x | x)'であることになります。 – Shepmaster