上級 › ジェネリック関数に値を渡すと所有権がムーブされ2回使えない › パターン5
ジェネリック関数に値を渡すと所有権がムーブされ2回使えない
ジェネリック型Tを所有権ごと受け取る関数に値を渡すと、Copyを実装していない型の場合は所有権がムーブされます。
1 fn tally<T>(items: Vec<T>) -> usize { 2 items.len() 3 } 4 fn main() { 5 let entries = vec!["x", "y", "z"]; 6 let a = tally(________________); ^ 7 let b = tally(entries); 8 println!("{} {}", a, b); 9 }
error[E0382]: use of moved value: `entries`
空欄を埋めて実行を通す
関数がVec<T>を借用(&Vec<T>)ではなく所有権ごと受け取る設計になっている点に注意が必要です。
次の問題