I'm new to Rust and trying to wrap my head around the ownership/borrowing concept. Now I have reduced my code to this minimal code sample that gives a compile error.
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.
I'm still in the everything is copied by value mindset, where it is perfectly legal to do self.color
as that would get me a copy of Color
. Apparently, I am wrong. I found some other questions about this same error on SO, but no solution to my issue.
As I understand it, the field is owned by whomever owns the Display
. Since I only borrowed a
reference to the Display
, I don't own it. Extracting color
attempts to transfer ownership of
the Color
to me, which is not possible since I don't own the Display
. Is this correct?
How do I solve it?