E0502E0502 — Nelze vypůjčit jako mutabilní, protože je již vypůjčeno jako imutabilní
Hodnotu nelze mutabilně vypůjčit, dokud je aktivní imutabilní výpůjčka.
Co způsobuje tuto chybu
Rust vynucuje, že mutabilní reference a imutabilní reference na stejná data nemohou existovat zároveň. Imutabilní výpůjčka je stále aktivní v okamžiku, kdy se pokoušíte o mutabilní výpůjčku.
Jak to opravit
Refaktorujte kód tak, aby imutabilní výpůjčka skončila před začátkem mutabilní výpůjčky. Pokud potřebujete nezávislé kopie, naklonujte data. Omezte rozsah imutabilní výpůjčky pomocí bloku.
Příklad
let mut v = vec![1, 2];
let r = &v[0];
v.push(3);
println!("{}", r);Související chybové kódy
E0599E0599 — Na typu nebyla nalezena metoda X
Metoda na daném typu neexistuje, nebo požadovaný trait není v rozsahu.
E0597E0597 — Vypůjčená hodnota nežije dostatečně dlouho
Reference přežívá data, na která ukazuje.
E0133E0133 — Volání unsafe funkce vyžaduje blok unsafe
Unsafe funkce nebo operace je použita mimo blok unsafe.
E0308E0308 — Neodpovídající typy v větvích match
Různé větve match vrací nekompatibilní typy.
E0384E0384 — Nelze přiřadit hodnotu neměnné proměnné podruhé
Proměnná je znovu přiřazována, ale nebyla deklarována jako měnitelná.
E0200E0200 — Unsafe trait vyžaduje unsafe impl
Unsafe trait musí být implementován blokem unsafe impl.