Rust学习笔记(持续更新中^_^)

52 阅读1分钟

1. for &num in vec.iter() 和 for num in vec有什么不同

先问答一下:不同
会有这个疑问的原因在于我先前只熟悉JS和Python。 对于JS和Python来讲,他们都是动态类型语言,采用自动垃圾回收机制来管理内存。因此没有Rust(静态类型语言)中所有权的概念,所以不会出现因所有权转移导致变量不可用的情况。

举个例子:下图中for &num in vec.iter()中的&num是拷贝(借用)了vec.iter()迭代器中的元素,不会对vec本身的所有权有任何影响。而for num in vec,vec会被移动到循环中,num会依次获取vec中每一个元素的所有权。这意味着在循环结束后,vec不再有效,这也就是为什么下图会报错的原因。

截屏2025-02-24 17.13.17.png