【发布时间】:2017-04-10 10:01:20
【问题描述】:
我正在尝试创建一个特征,其中包括返回一些内部数据的迭代器的函数,然后可以由不同的结构实现。一个最小的例子如下:
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>, [closure@borrow.rs:45:37: 45:43]>
有没有办法让 Rust 推断出WrapperIterator 的正确类型?
【问题讨论】:
-
Idiomatic Rust 的函数体只是
self.data.iter().map(|&x| x)— 没有return,没有;。
标签: rust