E0308E0308 — Kiểu Không Khớp
Kiểu dự kiến không khớp với kiểu thực tế được cung cấp.
Nguyên nhân gây ra lỗi này
Hàm trả về kiểu khác với khai báo, biến được gán kiểu không tương thích, hoặc một nhánh match trả về kiểu khác. Hệ thống kiểu nghiêm ngặt của Rust yêu cầu kiểu khớp chính xác mà không có chuyển đổi ngầm định.
Cách sửa
Chuyển đổi giá trị sang kiểu mong đợi dùng `.into()`, `as`, hoặc trait `From`/`Into`. Sửa annotation kiểu trả về cho khớp với giá trị thực tế được trả. Dùng `.to_string()`, `.as_str()`, hoặc các phương thức chuyển đổi khác tùy trường hợp.
Ví dụ
fn main() {
let x: i32 = "hello";
}Mã lỗi liên quan
panic-stack-overflowPanic — Tràn Stack
Chương trình panic do sử dụng stack quá mức, thường do đệ quy sâu.
E0428E0428 — Định Nghĩa Trùng Lặp
Một phần tử có cùng tên được định nghĩa nhiều hơn một lần trong cùng một phạm vi.
E0599E0599 — Không tìm thấy method X trên kiểu này
Method không tồn tại trên kiểu đã cho, hoặc trait cần thiết chưa được đưa vào scope.
E0600E0600 — Không Thể Áp Dụng Toán Tử Một Ngôi
Một toán tử một ngôi được áp dụng cho kiểu không hỗ trợ nó.
unused_mutCảnh Báo Mut Không Dùng
Một biến được khai báo là mutable nhưng thực tế không bao giờ bị thay đổi.
E0271E0271 — Kiểu Không Khớp Trong Associated Type
Một associated type trong triển khai trait không khớp với kiểu mong đợi.