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

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

rustcargo

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

Mã lỗi liên quan