E0382E0382 — Użycie przesuniętej wartości
Wartość jest używana po tym, jak została przeniesiona do innej zmiennej lub funkcji.
Co powoduje ten błąd
System własności Rusta zakłada, że każda wartość ma dokładnie jednego właściciela. Gdy wartość jest przenoszona (przypisana do innej zmiennej lub przekazana do funkcji), oryginalna zmienna przestaje być dostępna. Dotyczy typów, które nie implementują Copy.
Jak to naprawić
Sklonuj wartość przed przeniesieniem, jeśli musisz jej użyć ponownie. Używaj referencji (&T lub &mut T) zamiast przekazywania własności. Zaimplementuj cechę Copy dla małych typów. Przepisz kod, by unikać używania wartości po jej przeniesieniu.
Przykład
let s = String::from("hi");
let s2 = s;
println!("{}", s);Powiązane kody błędów
E0609E0609 — Brak pola o nazwie X w typie
Struktura lub unia nie ma pola o podanej nazwie.
E0283E0283 — Niejednoznaczna implementacja traitu
Mogą mieć zastosowanie wiele implementacji traitu i Rust nie może określić, której użyć.
E0384E0384 — Nie można przypisać wartości dwa razy do niemutowalnej zmiennej
Zmienna jest ponownie przypisywana, ale nie została zadeklarowana jako mutowalna.
E0433E0433 — Nie udało się rozwiązać ścieżki modułu
Ścieżka modułu użyta w instrukcji use lub ścieżce typu nie może być rozwiązana.
panic-index-out-of-boundsPanic — Indeks poza zakresem
Program spanikował, ponieważ indeks przekroczył prawidłowy zakres dla kolekcji.
E0412E0412 — Nie można znaleźć typu w tym zasięgu
Użyto nazwy typu, który nie jest zdefiniowany ani zaimportowany w bieżącym zasięgu.