self的ownership发生了转移,所以是mut self。
可以改用for val in vals.iter()这个,iter()是ref,不是mut ref,这样for循环里面可以继续使用vals。
"Rust 中的集合(Collection)提供三个公共方法创建迭代器:iter()、iter_mut() 和 into_iter(),分别用于迭代 &T(引用)、&mut T(可变引用)和 T(值)。其中,前两种是普通方法,而into_iter() 来自于 IntoIterator trait。Rust 的 for 循环其实是迭代器语法糖,当没有显式的使用迭代器时,它会根据不同的上下文,分别使用 T、&T 和 &mut T 类型所实现的 into_iter() 返回的迭代器。唯一的例外是数组,原因是数组不能丢弃它的元素(不能缩小),因此 [T; N] 类型无法实现 into_iter(),只有 &[T; N] 和 &mut [T; N] 类型实现了 into_iter()。"
https://zhuanlan.zhihu.com/p/76293615
--
修改:z16166 FROM 123.115.133.*
FROM 123.115.133.*