我想擴展Iterator
特徵的功能。當在Rust中擴展Iterator特徵時找不到方法
我statistics/iter_statistics.rs
:
mod iter_statistics {
pub trait IterStatistics: Iterator<Item = f64> {
fn foo(&mut self) -> f64 {
0.0
}
}
impl IterStatistics for Iterator<Item = f64> {}
}
而且statistics/mod.rs
:
pub use self::iter_statistics::*;
mod iter_statistics;
最後在我的測試代碼,我有
use statistics::IterStatistics;
fn main() {
let z: Vec<f64> = vec![0.0, 3.0, -2.0];
assert_eq!(z.into_iter().foo(), 0.0);
}
當我運行測試,我得到:
error: no method name `foo` found for type `std::vec::IntoIter<f64>` in the current scope
assert_eq!(z.into_iter().foo(), 0.0);
^~~
這對我來說很陌生,因爲docs對於IntoIter<T>
說它實現了Iterator<Item=T>
。
這是一個麪點,但描述你有一個模塊'iter_statistics: :iter_statistics',這可能不是你的意思;不需要以它命名的文件內的'mod {}'。 –
@ChrisEmerson Yup從我制定示例代碼時起就是一種冗餘:) – michael60612