Enum sp_std::convert::Infallible 1.34.0[−][src]
The error type for errors that can never happen.
Since this enum has no variant, a value of this type can never actually exist.
This can be useful for generic APIs that use Result
and parameterize the error type,
to indicate that the result is always Ok
.
For example, the TryFrom
trait (conversion that returns a Result
)
has a blanket implementation for all types where a reverse Into
implementation exists.
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` } }
Future compatibility
This enum has the same role as the !
“never” type,
which is unstable in this version of Rust.
When !
is stabilized, we plan to make Infallible
a type alias to it:
pub type Infallible = !;
… and eventually deprecate Infallible
.
However there is one case where !
syntax can be used
before !
is stabilized as a full-fledged type: in the position of a function’s return type.
Specifically, it is possible implementations for two different function pointer types:
trait MyTrait {} impl MyTrait for fn() -> ! {} impl MyTrait for fn() -> std::convert::Infallible {}
With Infallible
being an enum, this code is valid.
However when Infallible
becomes an alias for the never type,
the two impl
s will start to overlap
and therefore will be disallowed by the language’s trait coherence rules.
Trait Implementations
impl Clone for Infallible
[src]
pub fn clone(&self) -> Infallible
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for Infallible
[src]
impl Debug for Infallible
[src]
impl Display for Infallible
[src]
impl Eq for Infallible
[src]
impl Error for Infallible
1.8.0[src]
pub fn description(&self) -> &str
[src]
pub fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0[src]
pub fn backtrace(&self) -> Option<&Backtrace>
[src]
pub fn cause(&self) -> Option<&dyn Error>
1.0.0[src]
impl From<!> for Infallible
[src]
pub fn from(x: !) -> Infallible
[src]
impl From<Infallible> for TryFromIntError
[src]
pub fn from(x: Infallible) -> TryFromIntError
[src]
impl From<Infallible> for TryFromSliceError
1.36.0[src]
pub fn from(x: Infallible) -> TryFromSliceError
[src]
impl Hash for Infallible
1.44.0[src]
pub fn hash<H>(&self, &mut H) where
H: Hasher,
[src]
H: Hasher,
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Ord for Infallible
[src]
pub fn cmp(&self, _other: &Infallible) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl PartialEq<Infallible> for Infallible
[src]
pub fn eq(&self, &Infallible) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialOrd<Infallible> for Infallible
[src]
pub fn partial_cmp(&self, _other: &Infallible) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
Auto Trait Implementations
impl RefUnwindSafe for Infallible
[src]
impl Send for Infallible
[src]
impl Sync for Infallible
[src]
impl Unpin for Infallible
[src]
impl UnwindSafe for Infallible
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut Tⓘ
[src]
impl<T> From<!> for T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,