这个问题在这里已经有了答案:
Difference between iter() and into_iter() on a shared, borrowed Vec?
(1 个回答)
What is the difference between iter and into_iter?
(4 个回答)
What does it mean to pass in a vector into a `for` loop versus a reference to a vector?
(1 个回答)
1年前关闭。
以下迭代向量的方法有什么不同吗?两种方法都成功迭代。
let vo = vec![30, 50, 70, 80];
方法一
for uu in vo.iter() {
println!("uu {}", uu);
}
println!("vo 1 {:?}", vo);
方法二
for uu in &vo {
println!("{}", uu);
}
println!("vo 2 {:?}", vo);
最佳答案
没有区别,没有。
第二个是impl<'a, T> IntoIterator for &'a Vec<T>
, 和 it just call the first one ( Vec::iter
) .由于该方法非常短,因此它有大约 100% 的机会被内联,并且您将获得相同的结果(如果您在没有优化的情况下进行编译,则使用中间函数调用,仅此而已)。
关于rust - 这些迭代向量的方法有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62410265/