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'。 –