1
我想创建一个包含函数的特征,该函数返回一些内部数据的迭代器,然后可以通过不同的结构实现该特性。一个最小的例子如下:有没有办法让Rust推断相关类型的正确类型?
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
类型是相当复杂的 - 从一个错误消息(经由类型不匹配创建)我发现它是:
std::iter::Map<std::slice::Iter<'_, u32>, [[email protected]:45:37: 45:43]>
是否有一个让Rust为WrapperIterator
推断正确类型的方法?
惯用锈病将有函数体只是'self.data.iter()地图(|&X | X)' - 没有'return',没有';'。 – Shepmaster