Enum core::convert::Infallible 1.34.0[−][src]
pub enum Infallible {}
Expand description
永远不会发生的错误的错误类型。
由于此枚举没有成员,因此这种类型的值永远不会实际存在。
这对于使用 Result
并参数化错误类型的泛型 API 很有用,以指示结果始终为 Ok
。
例如,对于存在反向 Into
实现的所有类型,TryFrom
trait (返回 Result
的转换) 都具有通用实现。
ⓘ
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)) // 永不返回 `Err` } }Run
Future 兼容性
该枚举与 never 类型 (!
) 具有相同的作用,在此版本的 Rust 中不稳定。
当 !
稳定后,我们计划将 Infallible
用作它的类型别名:
ⓘ
pub type Infallible = !;Run
… 并最终弃用 Infallible
。
但是,在一种情况下,可以在将 !
稳定为完整类型之前使用 !
语法: 在函数的返回类型位置。
具体来说,可能有两种不同的函数指针类型的实现:
trait MyTrait {} impl MyTrait for fn() -> ! {} impl MyTrait for fn() -> std::convert::Infallible {}Run
Infallible
是枚举,此代码有效。
但是,当 Infallible
成为 never type 的别名时,两个 impl
将开始重叠,因此将被语言的 trait 一致性规则所禁止。
Trait Implementations
执行转换。
执行转换。