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不再有效,这也就是为什么下图会报错的原因。