Erhalte ein Aufzählungsfeld aus einer Struktur: kann nicht aus ausgeliehenen Inhalten verschoben werden

Ich bin neu in Rust und versuche, mich mit dem Besitz- / Ausleihkonzept zu beschäftigen. Jetzt habe ich meinen Code auf dieses minimale Codebeispiel reduziert, das einen Kompilierungsfehler verursacht.

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.

Ich bin noch imalles wird von value @ kopie Denkweise, wo es vollkommen legal ist,self.color als das würde mir eine Kopie vonColor. Anscheinend irre ich mich. Ich habe einige andere Fragen zu diesem Fehler auf SO gefunden, aber keine Lösung für mein Problem.

Soweit ich weiß, gehört das Feld demjenigen, dem das @ gehörDisplay. Da ich mir nur einen Hinweis auf das @ geliehen haDisplay, Ich besitze es nicht. @ Extrahiercolor versucht, das Eigentum an @ zu übertragColor zu mir, was nicht möglich ist, da ich das @ nicht besitDisplay. Ist das richtig

Wie löse ich das?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage