上級 › ジェネリック関数に値を渡すと所有権がムーブされ2回使えない › パターン2
ジェネリック関数に値を渡すと所有権がムーブされ2回使えない
ジェネリック型Tを所有権ごと受け取る関数に値を渡すと、Copyを実装していない型の場合は所有権がムーブされます。
1 fn process<T>(items: Vec<T>) -> usize { 2 items.len() 3 } 4 fn main() { 5 let list = vec!["a", "b"]; 6 let a = process(_____________); ^ 7 let b = process(list); 8 println!("{} {}", a, b); 9 }
error[E0382]: use of moved value: `list`
空欄を埋めて実行を通す
ジェネリック関数でも、Copyを実装しない型を値渡しすれば通常の所有権ムーブと同じことが起こります。
次の問題