Tôi gặp phải một thông báo lỗi rất khó hiểu từ trình biên dịch Rust khi sử dụng câu lệnh match
.Khó hiểu lỗi mẫu không thể truy cập
enum Name {
Known,
}
fn unreachable_pattern(n: Name) -> usize {
use Name::*;
match n {
Unknown => 1,
Known => 1,
}
}
Trình biên dịch Rust phàn nàn về một mô hình unreachable:
error[E0001]: unreachable pattern
--> src/main.rs:10:9
|
10 | Known => 1,
| ^^^^^ this is an unreachable pattern
|
note: this pattern matches any value
--> src/main.rs:9:9
|
9 | Unknown => 1,
| ^^^^^^^
Để một con người, lỗi thực sự là Unknown
là mất tích từ định nghĩa của Name
, đó là dễ dàng hơn để phát hiện khi bạn không có 40 biến thể khác.
Tôi không hiểu tại sao 'i' là một trận đấu không thể chối cãi? Điều gì là không thể chối cãi về nó? –
@MikeVella: Không thể chối cãi có nghĩa là nó luôn khớp. Và vì 'i' không có mẫu (chỉ là một ràng buộc), thì bất kể cấu trúc bên trong/giá trị nào của biến được so khớp thì sẽ luôn có thể ràng buộc nó thành' i'. –