E0382E0382 — Sử dụng giá trị đã bị move
Một giá trị bị sử dụng sau khi đã được move sang biến hoặc hàm khác.
Nguyên nhân gây ra lỗi này
Hệ thống ownership của Rust quy định mỗi giá trị chỉ có đúng một chủ sở hữu. Khi giá trị bị move (gán cho biến khác hoặc truyền vào hàm), biến gốc không thể dùng nữa. Quy tắc này áp dụng cho các kiểu không implement Copy.
Cách sửa
Clone giá trị trước khi move nếu cần dùng lại. Dùng tham chiếu (&T hoặc &mut T) thay vì chuyển ownership. Implement trait Copy cho các kiểu nhỏ. Tái cấu trúc code để tránh dùng giá trị sau khi move.
Ví dụ
let s = String::from("hi");
let s2 = s;
println!("{}", s);Mã lỗi liên quan
E0609E0609 — Không có trường X trên kiểu này
Struct hoặc union không có trường với tên đã cho.
E0283E0283 — Triển Khai Trait Mơ Hồ
Nhiều triển khai trait có thể áp dụng và Rust không thể xác định cái nào cần dùng.
E0384E0384 — Không Thể Gán Hai Lần Cho Biến Bất Biến
Một biến đang được gán lại nhưng không được khai báo là mutable.
E0433E0433 — Không thể resolve đường dẫn module
Đường dẫn module dùng trong lệnh use hoặc type path không thể được resolve.
panic-index-out-of-boundsPanic — Chỉ Số Vượt Ngoài Giới Hạn
Chương trình panic vì chỉ số vượt ngoài phạm vi hợp lệ của một collection.
E0412E0412 — Không Tìm Thấy Kiểu Trong Phạm Vi Này
Một tên kiểu được sử dụng nhưng chưa được định nghĩa hoặc nhập vào phạm vi hiện tại.