私はRustが初めてで、所有権/借用の概念に頭を悩ませようとしています。これで、コードをコンパイル エラーを発生させる最小限のコード サンプルに減らしました。
pub struct Display {
color: Color,
}
pub enum Color {
Blue = 0x1,
Red = 0x4,
}
impl Display {
fn get_color_value(&self) -> u16 {
self.color as u16
}
}
src/display.rs:12:9: 12:13 error: cannot move out of borrowed content src/display.rs:12 self.color as u16 ^~~~ error: aborting due to previous error Could not compile.
私はまだ、すべてが価値観によってコピーされているという考え方にとどまってself.color
いますColor
。どうやら、私は間違っています。SOでこの同じエラーに関する他の質問を見つけましたが、問題の解決策はありません。
私が理解しているように、フィールドは所有者が所有していDisplay
ます。への参照を借りただけなので、Display
所有していません。の所有権を私に譲渡color
しようとしていますが、私は を所有Color
していないため、これは不可能Display
です。これは正しいです?
どうすれば解決できますか?