Obtenga un campo de enumeración de una estructura: no puede salir del contenido prestado
Soy nuevo en Rust y estoy tratando de entender el concepto de propiedad / préstamo. Ahora he reducido mi código a esta muestra de código mínimo que da un error de compilación.
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.
Todavía estoy en eltodo se copia por valor mentalidad, donde es perfectamente legal hacerself.color
ya que eso me daría una copia deColor
. Aparentemente estoy equivocado. Encontré algunas otras preguntas sobre este mismo error en SO, pero no hay solución para mi problema.
Según tengo entendido, el campo es propiedad de quien poseeDisplay
. Como solo tomé prestada una referencia alDisplay
No me pertenece. Extrayendocolor
intenta transferir la propiedad delColor
para mí, lo que no es posible ya que no soy dueño delDisplay
. ¿Es esto correcto?
¿Cómo lo resuelvo?