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; }
}
None of these work; how should I do it?
I get errors like:
mutmust be attached to each individual binding- expected identifier, found
*- expected expression, found keyword
mut- cannot assign to
*xwhich is behind a&reference
You may want to re-read The Rust Programming Language, specifically the sections on:
We can also iterate over mutable references to each element in a mutable vector in order to make changes to all the elements. The
forloop in Listing 8-9 will add50to 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 inibefore we can use the+=operator.
In addition, you can call the iter_mut method:
let mut v = vec![100, 32, 57];
for i in v.iter_mut() {
*i += 50;
}
See also:
Note that your variable is not a vector. It is an array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With