上級 › E0507: cannot move out of ... which is behind a shared reference › パターン4
E0507: cannot move out of ... which is behind a shared reference
&で借りている構造体のフィールドを、所有権を要求する関数にそのまま渡そうとするとE0507エラーになります。
1 struct Record { label: String } 2 fn take(s: String) -> usize { s.len() } 3 fn main() { 4 let r = Record { label: String::from("note") }; 5 let rref = &r; 6 let len = take(_____________________); ^ 7 println!("{}", len); 8 }
error[E0507]: cannot move out of `rref.label` which is behind a shared reference
空欄を埋めて実行を通す
参照経由でもフィールドを読むことはできますが、所有権ごと取り出す(ムーブする)ことはできません。
次の問題