Đi đến nội dung
Lỗi trình biên dịch RustLỗi
E0382

E0382 — 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.

rustcargo

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);
Tài liệu chính thức

Mã lỗi liên quan