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?