中級 › for ループで Vec を直接回すと要素がムーブされる › パターン1
for ループで Vec を直接回すと要素がムーブされる
for x in vec のように所有権を持つVecを直接forに渡すと、内部でinto_iter()が呼ばれ各要素の所有権がムーブされます。
1 fn main() { 2 let names = vec![String::from("a"), String::from("b")]; 3 for name in _____________ { ^ 4 println!("{}", name); 5 } 6 println!("{}", names.len()); 7 }
error[E0382]: borrow of moved value: `names`
空欄を埋めて実行を通す
forに所有権を持つVecを直接渡すと要素がムーブされます。ループ後も使いたい場合は&で参照を渡します。
次の問題