本文简要介绍rust语言中 Enum core::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 IntoKeys用法及代码示例
- Rust IntoIter.as_mut_slice用法及代码示例
- Rust IntErrorKind用法及代码示例
- Rust Intersection用法及代码示例
- Rust IntoInnerError.error用法及代码示例
- Rust Into用法及代码示例
- Rust Incoming用法及代码示例
- Rust IntoIter.new用法及代码示例
- Rust Instant.checked_duration_since用法及代码示例
- Rust Index用法及代码示例
- Rust IntoValues用法及代码示例
- Rust IntoIterator.into_iter用法及代码示例
- Rust Instant.now用法及代码示例
- Rust IntoInnerError.into_inner用法及代码示例
- Rust Instant.saturating_duration_since用法及代码示例
- Rust IntoInnerError.into_parts用法及代码示例
- Rust IntoIter.as_slice用法及代码示例
- Rust IntoIterator用法及代码示例
- Rust IntoIter用法及代码示例
- Rust Instant.duration_since用法及代码示例
- Rust IntoRawFd.into_raw_fd用法及代码示例
- Rust IntoInnerError.into_error用法及代码示例
- Rust Instant用法及代码示例
- Rust IntoInnerError用法及代码示例
- Rust IndexMut用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Enum core::convert::Infallible。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。