E0004
这个错误表明编译器不能保证 match 表达式的一个或多个可能输入的 match 模式(能执行)。为了给匹配表达式赋值,或者确定执行流,需要有保证的匹配。
错误代码示例:
enum Terminator {
HastaLaVistaBaby,
TalkToMyHand,
}
let x = Terminator::HastaLaVistaBaby;
match x { // error: non-exhaustive patterns: `HastaLaVistaBaby` not covered
Terminator::TalkToMyHand => {}
}
如果遇到这种错误,必须更改模式,以便匹配输入类型的每个可能值。对于具有少量变量的类型(如枚举),您可能应该显式地涵盖所有情况。或者,下划线 _
通配符模式可以添加在所有其他模式之后,以匹配“所有其他”情况。 例如:
enum Terminator {
HastaLaVistaBaby,
TalkToMyHand,
}
let x = Terminator::HastaLaVistaBaby;
match x {
Terminator::TalkToMyHand => {}
Terminator::HastaLaVistaBaby => {}
}
// 或者:
match x {
Terminator::TalkToMyHand => {}
_ => {}
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。