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 => {}
    _ => {}
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/rust-rcei-2020/...

译文地址:https://learnku.com/docs/rust-rcei-2020/...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~