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 alDisplayNo 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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta