我是 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
. 它是否正确?
我该如何解决?