【发布时间】:2015-03-03 23:20:47
【问题描述】:
我是 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。这是正确的吗?
我该如何解决?
【问题讨论】:
标签: rust borrow-checker