当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Infallible用法及代码示例


本文简要介绍rust语言中 Enum std::convert::Infallible 的用法。

用法

pub enum Infallible {}

永远不会发生的错误的错误类型。

由于此枚举没有变体,因此这种类型的值永远不会真正存在。这对于使用 Result 并参数化错误类型的通用 API 很有用,以指示结果始终为 Ok

例如, TryFrom 特征(返回 Result 的转换)对存在反向 Into 实现的所有类型都有一个全面的实现。

impl<T, U> TryFrom<U> for T where U: Into<T> {
    type Error = Infallible;

    fn try_from(value: U) -> Result<Self, Infallible> {
        Ok(U::into(value))  // Never returns `Err`
    }
}

未来的兼容性

该枚举的作用与never,在此版本的 Rust 中不稳定。什么时候!已经稳定下来,我们计划Infallible它的类型别名:

pub type Infallible = !;

…并最终弃用 Infallible

然而,在一种情况下,在 ! 稳定为成熟类型之前可以使用 ! 语法:在函数返回类型的位置。具体来说,可以实现两种不同的函数指针类型:

trait MyTrait {}
impl MyTrait for fn() -> ! {}
impl MyTrait for fn() -> std::convert::Infallible {}

Infallible 是一个枚举,此代码是有效的。但是,当 Infallible 成为 never 类型的别名时,两个 impl 将开始重叠,因此语言的特征一致性规则将不允许这样做。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Enum std::convert::Infallible。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。