上級 › E0507: cannot move out of ... which is behind a shared reference › パターン1
E0507: cannot move out of ... which is behind a shared reference
&で借りている構造体のフィールドを、所有権を要求する関数にそのまま渡そうとするとE0507エラーになります。
1 struct Wrapper { value: String } 2 fn take(s: String) -> usize { s.len() } 3 fn main() { 4 let w = Wrapper { value: String::from("hi") }; 5 let wref = &w; 6 let len = take(_____________________); ^ 7 println!("{}", len); 8 }
error[E0507]: cannot move out of `wref.value` which is behind a shared reference
空欄を埋めて実行を通す
wrefは借用しているだけなので、その中のフィールドの所有権を勝手に持ち出すことはできません。
次の問題