如何在 for 循环中进行可变借用?
How can I do a mutable borrow in a for loop?
我试过了:
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; }
}
None 这些作品;我应该怎么做?
我收到如下错误:
mut
must be attached to each individual binding
- expected identifier, found
*
- expected expression, found keyword
mut
- cannot assign to
*x
which is behind a &
reference
您可能需要重新阅读 The Rust Programming Language,特别是以下部分:
We can also iterate over mutable references to each element in a mutable vector in order to make changes to all the elements. The for
loop in Listing 8-9 will add 50
to each element.
let mut v = vec![100, 32, 57];
for i in &mut v {
*i += 50;
}
Listing 8-9: Iterating over mutable references to elements in a vector
To change the value that the mutable reference refers to, we have to use the dereference operator (*
) to get to the value in i
before we can use the +=
operator.
另外,可以调用iter_mut
方法:
let mut v = vec![100, 32, 57];
for i in v.iter_mut() {
*i += 50;
}
另请参阅:
请注意,您的变量不是向量。它是一个数组。
我试过了:
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; }
}
None 这些作品;我应该怎么做?
我收到如下错误:
mut
must be attached to each individual binding- expected identifier, found
*
- expected expression, found keyword
mut
- cannot assign to
*x
which is behind a&
reference
您可能需要重新阅读 The Rust Programming Language,特别是以下部分:
We can also iterate over mutable references to each element in a mutable vector in order to make changes to all the elements. The
for
loop in Listing 8-9 will add50
to each element.let mut v = vec![100, 32, 57]; for i in &mut v { *i += 50; }
Listing 8-9: Iterating over mutable references to elements in a vector
To change the value that the mutable reference refers to, we have to use the dereference operator (
*
) to get to the value ini
before we can use the+=
operator.
另外,可以调用iter_mut
方法:
let mut v = vec![100, 32, 57];
for i in v.iter_mut() {
*i += 50;
}
另请参阅:
请注意,您的变量不是向量。它是一个数组。