7
当使用match
语句时,我遇到了来自Rust编译器的非常混淆的错误消息。混淆不可达模式错误
enum Name {
Known,
}
fn unreachable_pattern(n: Name) -> usize {
use Name::*;
match n {
Unknown => 1,
Known => 1,
}
}
锈病编译器会抱怨无法访问的模式:
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,
| ^^^^^^^
要人,真正的错误是Unknown
是从Name
定义,这是比较容易发现你的时候失踪还没有其他40种变种。
我不明白为什么'我'是一个无可辩驳的匹配?什么是无可辩驳的呢? –
@MikeVella:无可辩驳意味着它总是匹配。由于'i'不是模式(只是一个绑定),因此无论被匹配的变量的内部结构/值如何,它总是可以将它绑定到'i'。 –