E0382E0382 — Použití přesunuté hodnoty
Hodnota je použita poté, co byla přesunuta do jiné proměnné nebo funkce.
Co způsobuje tuto chybu
Systém vlastnictví v Rustu říká, že každá hodnota má právě jednoho vlastníka. Po přesunu hodnoty (přiřazení do jiné proměnné nebo předání funkci) nelze původní proměnnou nadále použít. Platí pro typy, které neimplementují Copy.
Jak to opravit
Před přesunem hodnotu naklonujte pomocí clone(), pokud ji potřebujete použít znovu. Místo přenosu vlastnictví použijte reference (&T nebo &mut T). Pro malé typy implementujte trait Copy. Refaktorujte kód tak, aby hodnota nebyla použita po přesunu.
Příklad
let s = String::from("hi");
let s2 = s;
println!("{}", s);Související chybové kódy
E0609E0609 — Typ nemá pole X
Struktura nebo union nemá pole se zadaným názvem.
E0283E0283 — Nejednoznačná implementace traitu
Mohlo by platit více implementací traitu a Rust nemůže určit, která se má použít.
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á.
E0433E0433 — Nepodařilo se vyřešit cestu k modulu
Cestu k modulu použitou v příkazu use nebo v cestě k typu nelze vyřešit.
panic-index-out-of-boundsPanic — Index mimo meze
Program zpanikoval, protože index byl mimo platný rozsah kolekce.
E0412E0412 — Typ nebyl nalezen v tomto oboru
Název typu je použit, ale není definován ani importován v aktuálním oboru.