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