rust - 这些迭代向量的方法有什么不同吗?

标签 rust

这个问题在这里已经有了答案:





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/

相关文章:

rust - 如何在 Rust 1.12 的 read_line 中检查 EOF?

rust - 在构建脚本中获取当前版本的方法?

rust - 如何测试一个值是否在一个范围内?

pattern-matching - 匹配实现特征并因此返回它的类型

rust - 如何指定特征参数的类型?

generics - 通过特征而不是结构参数化变量?

rust - 如何使用不安全代码在由 RefCell/RwLock Ref/Guard 封装的集合上返回 Iterator?

rust - 为什么 Rust 在读取循环后看不到变量?

rust - 用零字节填充向量的最佳方法?

rust - "where for"在 Rust 中意味着什么?