E0499E0499 — Không thể mượn mutably nhiều hơn một lần
Một giá trị bị mượn mutably nhiều hơn một lần cùng lúc.
Nguyên nhân gây ra lỗi này
Borrow checker của Rust ngăn hai mutable reference tới cùng dữ liệu tồn tại đồng thời. Điều này ngăn data race và đảm bảo an toàn bộ nhớ.
Cách sửa
Tái cấu trúc code để chỉ tồn tại một mutable borrow tại một thời điểm. Dùng block để giới hạn phạm vi của mutable borrow đầu tiên. Cân nhắc dùng Cell, RefCell, hoặc Mutex cho pattern interior mutability.
Ví dụ
let mut s = String::new();
let r1 = &mut s;
let r2 = &mut s;Mã lỗi liên quan
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.
E0152E0152 — lang Item Trùng Lặp
Một language item (#[lang = ...]) được định nghĩa nhiều hơn một lần.
E0621E0621 — Yêu Cầu Annotation Vòng Đời Tường Minh
Một tham số hàm cần annotation vòng đời tường minh để thỏa mãn borrow checker.
E0277E0277 — Kiểu không triển khai Sized
Một kiểu có kích thước động (DST) được dùng ở vị trí yêu cầu kiểu Sized.
panic-divide-by-zeroPanic — Chia cho số không
Chương trình panic do phép chia số nguyên cho không.
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.