How can I do a mutable borrow in a for loop?

You may want to re-read The Rust Programming Language, specifically the sections on:

  • mutability
  • mutable references
  • vectors

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.

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:

  • What’s the difference between placing “mut” before a variable name and after the “:”?
  • What is the difference between iter and into_iter?

Note that your variable is not a vector. It is an array.

Leave a Comment

tech