Rust 提示那场比赛是非详尽的。这是 Rust 的限制还是我错过了什么?
fn main() {
let x = 10;
match x {
1 => {},
y if y < 1 => {},
y if y > 1 => {}
}
}
最佳答案
Rust 在验证穷尽性时不会处理 if
表达式。鉴于此,您需要添加一个您标记为无法访问的包罗万象的匹配项,例如
fn main() {
let x = 10;
match x {
1 => {},
y if y < 1 => {},
y if y > 1 => {}
_ => unreachable!()
}
}
或者根据您的逻辑,更好的选择是根本不包含最后一个 if
,例如
fn main() {
let x = 10;
match x {
1 => {},
y if y < 1 => {},
y => {}
}
}
因为它只会到达最后一个匹配
,如果前面的匹配失败的话。
相关:
关于rust - 非穷举匹配 i32 即使它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67855118/