Obter um campo de enum de uma estrutura: não é possível sair do conteúdo emprestado
Sou novo no Rust e estou tentando entender o conceito de propriedade / empréstimo. Agora reduzi meu código a esse exemplo de código mínimo que fornece um erro de compilação.
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.
Eu ainda estou notudo é copiado pelo valor mentalidade, onde é perfeitamente legal fazerself.color
como isso me daria uma cópia doColor
. Aparentemente, eu estou errado. Encontrei outras perguntas sobre esse mesmo erro no SO, mas não há solução para o meu problema.
Pelo que entendi, o campo é de propriedade de quem possui oDisplay
. Como eu só pedi emprestada uma referência aoDisplay
, Eu não o possuo. Extraindocolor
tenta transferir a propriedade doColor
para mim, o que não é possível, já que não possuo oDisplay
. Isso está correto?
Como eu resolvo isso?