Получить поле enum из структуры: не может выйти из заимствованного содержимого
Я новичок в 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
, Это правильно?
Как мне это решить?