我尝试了:
fn main() {
let mut vec = [1, 2, 3];
for mut x in &vec { *x = 3; }
for mut &x in &vec { x = 3; }
for mut *x in &vec { x = 3; }
for mut x in mut &vec { *x = 3; }
for mut x in &(mut vec) { *x = 3; }
}
这些都不起作用,我该怎么做?
我遇到了以下错误:
mut
必须附加到每个单独的绑定- 预期标识符,发现
*
- 预期表达式,发现关键字
mut
- 无法对位于
&
引用后面的*x
进行赋值
for mut x in &(mut vec)
的无括号版本。 - ZisIsNotZisv: &mut [u32]
作为函数参数,则for i in v { *i += 50; }
与v.iter_mut()
相同。(我不知道是否有任何微妙的差异,但它编译方式相同。) - Peter CordesVec
内部的值,您还需要能够改变Vec
本身。编译器不知道/不向用户公开这样一个事实:改变Vec
的一个元素并不需要改变Vec
本身的数据。 - Shepmasteri
是一个数组项,在循环内部被改变,这就是为什么原始数组v
被标记为可变的,因为它的值在此循环内部被改变。 - flm