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