Wie kann ich das mutieren einer struct s Feld von einer Methode?
Ich dies tun möchten:
struct Point {
x: i32,
y: i32,
}
impl Point {
fn up(&self) {
self.y += 1;
}
}
fn main() {
let p = Point { x: 0, y: 0 };
p.up();
}
Aber dieser code löst einen compiler-Fehler:
error[E0594]: cannot assign to field `self.y` of immutable binding
--> src/main.rs:8:9
|
7 | fn up(&self) {
| ----- use `&mut self` here to make mutable
8 | self.y += 1;
| ^^^^^^^^^^^ cannot mutably borrow field of immutable binding
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
&mut self
statt&self
und machen diep
variable veränderlich:In Rust, Veränderlichkeit vererbt wird: der Eigentümer der Daten entscheidet, ob der Wert veränderbar oder nicht. Referenzen, jedoch, bedeutet nicht, dass Eigentum und damit Sie kann unveränderlich oder veränderlich selbst. Lesen Sie die offizielle Buch, das erklärt dieser grundlegenden Konzepte.