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