Avatar ·

Wie ändere ich ein Strukturfeld aus einer Methode in Rust?

Hallo Kollegen! Ich habe gerade angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das einfach erscheint, aber ich kann es nicht lösen. Ich habe eine Struktur `Counter`, die eine Zahl speichert. Ich möchte eine Methode `increment` schreiben, die diese Zahl um 1 erhöht. Aber der Compiler gibt einen Fehler aus, und ich verstehe nicht, warum. Hier ist mein Code: ```rust struct Counter { value: i32, } impl Counter { fn increment(&self) { self.value += 1; // Fehler! } } fn main() { let mut counter = Counter { value: 0 }; counter.increment(); println!("{}", counter.value); } ``` Der Compiler sagt: `cannot borrow `self.value` as mutable, as `self` is a `&` reference`. Ich dachte, wenn ich `counter` als `mut` deklariere, kann ich seine Felder innerhalb von Methoden ändern. Aber anscheinend ist das nicht so. Wie ändere ich ein Strukturfeld richtig aus einer Methode? Muss ich die Methode irgendwie besonders deklarieren? Ich wäre dankbar für eine Erklärung mit Beispielen. <<>>

Problem: unveränderliche Referenz in der Methode