Zum Inhalt springen
Rust-Compiler-FehlerFehler
E0502

E0502 — Ausleihe als veränderlich nicht möglich, da bereits unveränderlich ausgeliehen

Ein Wert kann nicht veränderlich ausgeliehen werden, solange eine unveränderliche Ausleihe noch aktiv ist.

rustcargo

Was verursacht diesen Fehler

Rust erzwingt, dass gleichzeitig keine veränderliche und unveränderliche Referenz auf dieselben Daten existieren darf. Die unveränderliche Ausleihe ist noch aktiv, wenn versucht wird, eine veränderliche Ausleihe zu nehmen.

So beheben Sie ihn

Strukturieren Sie den Code so um, dass die unveränderliche Ausleihe endet, bevor die veränderliche Ausleihe beginnt. Klonen Sie die Daten, wenn Sie unabhängige Kopien benötigen. Begrenzen Sie den Gültigkeitsbereich der unveränderlichen Ausleihe mit einem Block.

Beispiel

let mut v = vec![1, 2];
let r = &v[0];
v.push(3);
println!("{}", r);
Offizielle Dokumentation

Verwandte Fehlercodes