上級 › ジェネリック関数に値を渡すと所有権がムーブされ2回使えない › パターン4
ジェネリック関数に値を渡すと所有権がムーブされ2回使えない
ジェネリック型Tを所有権ごと受け取る関数に値を渡すと、Copyを実装していない型の場合は所有権がムーブされます。
1 fn summarize<T>(items: Vec<T>) -> usize { 2 items.len() 3 } 4 fn main() { 5 let records = vec![10, 20, 30]; 6 let a = summarize(________________); ^ 7 let b = summarize(records); 8 println!("{} {}", a, b); 9 }
error[E0382]: use of moved value: `records`
空欄を埋めて実行を通す
1回目のsummarize呼び出しでrecordsの所有権が消費され、2回目には渡す値が残っていません。
次の問題