Enum core::convert::Infallible
1.34.0 · source · 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`
}
}
RunFuture 兼容性
该枚举与 never 类型 (!
) 具有相同的作用,在此版本的 Rust 中是不稳定的。
当 !
稳定后,我们计划将 Infallible
用作它的类型别名:
… 并最终弃用 Infallible
。
但是,在一种情况下,可以在将 !
稳定为完整类型之前使用 !
语法:在函数的返回类型位置。
具体来说,可以实现两种不同的函数指针类型:
trait MyTrait {}
impl MyTrait for fn() -> ! {}
impl MyTrait for fn() -> std::convert::Infallible {}
RunInfallible
是一个枚举,这个代码是有效的。
但是,当 Infallible
成为 never type 的别名时,两个 impl
将开始重叠,因此将被语言的 trait 一致性规则所禁止。
Trait Implementations§
source§impl Clone for Infallible
impl Clone for Infallible
source§fn clone(&self) -> Infallible
fn clone(&self) -> Infallible
返回值的副本。 Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
从
source
执行复制分配。 Read moresource§impl Debug for Infallible
impl Debug for Infallible
source§impl Display for Infallible
impl Display for Infallible
1.8.0 · source§impl Error for Infallible
impl Error for Infallible
source§impl From<Infallible> for TryFromIntError
impl From<Infallible> for TryFromIntError
source§fn from(x: Infallible) -> TryFromIntError
fn from(x: Infallible) -> TryFromIntError
从输入类型转换为此类型。
1.36.0 · source§impl From<Infallible> for TryFromSliceError
impl From<Infallible> for TryFromSliceError
source§fn from(x: Infallible) -> TryFromSliceError
fn from(x: Infallible) -> TryFromSliceError
从输入类型转换为此类型。
1.44.0 · source§impl Hash for Infallible
impl Hash for Infallible
source§impl Ord for Infallible
impl Ord for Infallible
source§impl PartialEq<Infallible> for Infallible
impl PartialEq<Infallible> for Infallible
source§impl PartialOrd<Infallible> for Infallible
impl PartialOrd<Infallible> for Infallible
impl Copy for Infallible
impl Eq for Infallible
Auto Trait Implementations§
impl RefUnwindSafe for Infallible
impl Send for Infallible
impl Sync for Infallible
impl Unpin for Infallible
impl UnwindSafe for Infallible
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
从拥有的值中借用。 Read more