上級 › ジェネリック関数に値を渡すと所有権がムーブされ2回使えない › パターン3
ジェネリック関数に値を渡すと所有権がムーブされ2回使えない
ジェネリック型Tを所有権ごと受け取る関数に値を渡すと、Copyを実装していない型の場合は所有権がムーブされます。
1 fn handle<T>(items: Vec<T>) -> usize { 2 items.len() 3 } 4 fn main() { 5 let bag = vec![1.0, 2.0]; 6 let a = handle(____________); ^ 7 let b = handle(bag); 8 println!("{} {}", a, b); 9 }
error[E0382]: use of moved value: `bag`
空欄を埋めて実行を通す
同じ値を複数の関数呼び出しで使い回したい場合、所有権を渡し切らないようcloneや参照渡しを検討します。
次の問題