forループでイテレータ into_iter() が所有権を奪う

for x in vec と書くと暗黙的に、into_iter()が呼ばれてvecは所有権を失ってしまう。forで暗黙的に呼ぶのなら、所有権を奪わないiter()の方が良かったんじゃないと思い、AI先生に理由を聞いた。どうも、into_iter()が効率がよく、所有権の管理が明確になるという2点がポイントだそうだ。
AI先生は嘘つきだから、どうせ誰かが検証しているだろうと検索してみた。https://dawn.hateblo.jp/entry/2017/07/24/165933によると、確かに、iter()のほうが誤差程度で遅いらしい。大きなデータ構造ではもう少し差がでるのだろう。

let vec = vec![1, 2, 3];
let vec_iter = vec.iter();
for x in vec_iter {
    println!("{}", x);
}
// まだvecは有効
println!("{:?}", vec);

let vec = vec![1, 2, 3];
for x in vec {
    // vec.into_iter()が呼ばれた
    println!("{}", x);
    //println!("{:?}", vec); 当然、使えない
}
// ここでvecは使えなくなる
//println!("{:?}", vec);