在阅读Rust的convert.rs时,我遇到了以下代码:
#[unstable(feature = "try_from", issue = "33417")]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Infallible {}
#[unstable(feature = "try_from", issue = "33417")]
impl fmt::Display for Infallible {
fn fmt(&self, _: &mut fmt::Formatter) -> fmt::Result {
match *self {
}
}
}
Run Code Online (Sandbox Code Playgroud)
Infallible是一个空的枚举,没有变种.什么match *self {}回报?
由于Infallible没有可能的值,您永远不会有它的实例.这意味着永远不会发生匹配.Rust通过在空枚举上进行匹配来表示这种!类型,这是一种没有值的内置类型.
这种类型强制转换为任何其他类型,因为永远不会达到该语句,因为您需要一个类型的值Infallible,这是因为显而易见的原因.
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |