¿Por qué el compilador no se queja de que un iterador movido a un bucle for es inmutable?

Estoy leyendo la segunda edición del Rust Book y encontré el siguiente ejemplo en la sección de iteradores:

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter();    
for val in v1_iter {
    println!("Got: {}", val);
}

¿Por qué el compilador no se queja de quev1_iter es inmutable? El libro dice que el ciclo for tomó posesión dev1_iter y lo hizo mutable detrás de escena, pero ¿puedes convertir una variable inmutable a mutable?

Respuestas a la pregunta(1)

Su respuesta a la pregunta