【发布时间】:2016-08-13 08:06:24
【问题描述】:
我有这个例子:
struct Foo { data: Vec<u32> }
impl Foo {
fn get_list(&self) -> &Vec<u32> {
&self.data
}
}
fn main() {
let foo = Foo { data: vec![1, 2, 3] };
// 1
for it in foo.get_list() {
println!("IntoIter {}", *it);
}
// 2
for it in foo.get_list().iter() {
println!("Iter {}", *it);
}
}
据我了解,万一(1)&Vec转换为IntoIterator,
在情况(2)中,我们只使用Iter。
就潜在性能而言,这些情况是否相同(编译器在优化模式下可以做什么)?
如果情况相同,为什么要引入
IntoIterator?是为了避免写.iter()吗?
【问题讨论】: