E0515E0515 — Không thể trả về reference tới biến cục bộ
Một hàm cố trả về reference tới giá trị được tạo bên trong hàm.
Nguyên nhân gây ra lỗi này
Biến cục bộ sẽ bị drop khi hàm trả về, nên reference tới nó sẽ bị dangling. Rust ngăn việc trả về reference tới dữ liệu không tồn tại lâu hơn lời gọi hàm.
Cách sửa
Trả về owned value (String, Vec, Box) thay vì reference. Chuyển dữ liệu lên scope có lifetime dài hơn. Dùng static reference nếu dữ liệu là hằng số tại compile time.
Ví dụ
fn foo() -> &str {
let s = String::from("hi");
&s
}Mã lỗi liên quan
E0502E0502 — Không thể mượn mutably vì đang có immutable borrow
Không thể mượn mutably một giá trị trong khi immutable borrow vẫn còn hiệu lực.
unused_variablesCảnh Báo Biến Không Dùng
Một biến được khai báo nhưng không bao giờ được sử dụng trong mã.
E0658E0658 — Sử dụng tính năng chưa ổn định
Một tính năng chưa được stabilize trong Rust đang được dùng mà không có feature gate.
E0106E0106 — Thiếu lifetime specifier
Một reference trong chữ ký hàm hoặc struct thiếu tham số lifetime.
E0614E0614 — Không thể deref kiểu này
Toán tử dereference (*) được dùng trên kiểu không implement Deref.
clippy::let_and_returnClippy — Let và Return
Một biến được khai báo và trả về ngay ở dòng tiếp theo.