I am confused by this example.
let mut numbers: Vec<i32> = vec![1,2,3,4];
for x in numbers.iter() {
println!("Number: {}", x);
}
// Try to double the values in the vector.
for x in numbers.iter_mut() {
*x *= 2;
}
when I tried x *= 2;, the compiler complains cannot use '*=' on type '&mut i32'
but isn't x just a mut i32? why it is a &mut i32? if it is a &mut i32 why I dont need to print it as println!("Number: {}", *x)?