E0499E0499 — Veränderliche Ausleihe mehr als einmal gleichzeitig nicht möglich
Ein Wert wird gleichzeitig mehrfach veränderlich ausgeliehen.
Was verursacht diesen Fehler
Rusts Borrow-Checker verhindert, dass zwei veränderliche Referenzen auf dieselben Daten gleichzeitig existieren. Dies verhindert Datenrennen und gewährleistet Speichersicherheit.
So beheben Sie ihn
Strukturieren Sie den Code so um, dass nur eine veränderliche Ausleihe gleichzeitig existiert. Begrenzen Sie den Gültigkeitsbereich der ersten veränderlichen Ausleihe mit einem Block. Erwägen Sie Cell, RefCell oder Mutex für Interior-Mutability-Muster.
Beispiel
let mut s = String::new();
let r1 = &mut s;
let r2 = &mut s;Verwandte Fehlercodes
E0382E0382 — Verwendung eines verschobenen Werts
Ein Wert wird verwendet, nachdem er in eine andere Variable oder Funktion verschoben wurde.
E0152E0152 — Doppeltes lang-Item
Ein Sprach-Item (#[lang = ...]) wird mehr als einmal definiert.
E0621E0621 — Explizite Lifetime erforderlich
Ein Funktionsparameter benötigt eine explizite Lifetime-Annotation, um den Borrow Checker zu erfüllen.
E0277E0277 — Typ implementiert Sized nicht
Ein dynamisch großer Typ (DST) wird dort verwendet, wo ein Sized-Typ erwartet wird.
panic-divide-by-zeroPanic — Division durch null
Das Programm ist wegen einer ganzzahligen Division durch null in Panic geraten.
panic-index-out-of-boundsPanic — Index außerhalb des gültigen Bereichs
Das Programm ist abgestürzt, weil ein Index außerhalb des gültigen Bereichs einer Collection lag.