Por que o compilador não reclama que um iterador movido para um loop for é imutável?

Estou lendo a segunda edição do Rust Book e encontrei o seguinte exemplo na seção de iteradores:

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

Por que o compilador não reclama quev1_iter é imutável? O livro diz que o loop for tomou posse dev1_iter e a tornou mutável nos bastidores, mas você pode converter uma variável imutável em mutável?

questionAnswers(1)

yourAnswerToTheQuestion