I tried:
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
这是后面一个&
参考
您可能想重新阅读Rust 编程语言 https://doc.rust-lang.org/stable/book/,特别是以下部分:
- 可变性 https://doc.rust-lang.org/stable/book/ch03-01-variables-and-mutability.html
- 可变引用 https://doc.rust-lang.org/stable/book/ch04-02-references-and-borrowing.html#mutable-references
- vectors https://doc.rust-lang.org/stable/book/ch08-01-vectors.html
我们还可以迭代对可变向量中每个元素的可变引用,以便对所有元素进行更改。这for
清单 8-9 中的循环将添加50
到每个元素。
let mut v = vec![100, 32, 57];
for i in &mut v {
*i += 50;
}
示例 8-9:迭代向量中元素的可变引用
要更改可变引用引用的值,我们必须使用解引用运算符(*
) 得到其中的值i
在我们可以使用之前+=
操作员。
此外,您还可以致电iter_mut https://doc.rust-lang.org/std/primitive.slice.html#method.iter_mut method:
let mut v = vec![100, 32, 57];
for i in v.iter_mut() {
*i += 50;
}
也可以看看:
- 将“mut”放在变量名之前和“:”之后有什么区别? https://stackoverflow.com/q/28587698/155423
- iter 和 into_iter 有什么区别? https://stackoverflow.com/q/34733811/155423
请注意,您的变量是不是向量。它是一个数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)