是否准确地说明一个向量(以及其他集合类型)是一个Iterator
?
例如,我可以通过以下方式循环遍历向量,因为它实现了Iterator
特征(据我所知):
let v = vec![1, 2, 3, 4, 5];
for x in &v {
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用属于Iterator
特征的函数(例如fold
,map
或filter
),为什么我必须首先调用iter()
该向量?
我的另一个想法是,可能会将矢量转换为a Iterator
,在这种情况下,上面的语法更有意义.
sta*_*lue 31
不,矢量不是迭代器.
但是它实现了trait IntoIterator
,for
循环使用它来将向量转换为所需的迭代器.
在文档中,Vec
您可以看到它IntoIterator
以三种方式实现:for Vec<T>
,移动,迭代器返回类型的项T
,用于共享引用&Vec<T>
,迭代器返回共享引用&T
,以及&mut Vec<T>
返回可变引用的位置.
iter()
仅仅是一个方法在Vec
转换Vec<T>
直接进入返回共享引用一个迭代,而不首先将其转化为参考.有一种iter_mut()
生成可变引用的兄弟方法.
归档时间: |
|
查看次数: |
6214 次 |
最近记录: |