Enum std::convert::Infallible   
1.34.0 · source · pub enum Infallible {}Expand description
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`
 }
}Run 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 = !;Run ... 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 to have implementations for two different function pointer types:
trait MyTrait {}
impl MyTrait for fn() -> ! {}
impl MyTrait for fn() -> std::convert::Infallible {}Run With Infallible being an enum, this code is valid.
However when Infallible becomes an alias for the never type,
the two impls will start to overlap
and therefore will be disallowed by the language’s trait coherence rules.
Trait Implementations
const: unstable  · source impl Clone for Infallible 
 
impl Clone for Infallible
const: unstable  · source fn clone(&self) -> Infallible 
 
fn clone(&self) -> Infallible
Returns a copy of the value. Read more
1.0.0 · source fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more 
source 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 fn description(&self) -> &str 
 
fn description(&self) -> &str
use the Display impl or to_string()
1.30.0 · source fn source(&self) -> Option<&(dyn Error + 'static)>
 
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more
const: unstable  · source impl From<!> for Infallible 
 
impl From<!> for Infallible
const: unstable  · source fn from(x: !) -> Infallible 
 
fn from(x: !) -> Infallible
Converts to this type from the input type.
const: unstable  · source impl From<Infallible> for TryFromIntError 
 
impl From<Infallible> for TryFromIntError
const: unstable  · source fn from(x: Infallible) -> TryFromIntError 
 
fn from(x: Infallible) -> TryFromIntError
Converts to this type from the input type.
1.36.0 (const: unstable) · source impl From<Infallible> for TryFromSliceError 
 
impl From<Infallible> for TryFromSliceError
const: unstable  · source fn from(x: Infallible) -> TryFromSliceError 
 
fn from(x: Infallible) -> TryFromSliceError
Converts to this type from the input type.
1.44.0 · source impl Hash for Infallible 
 
impl Hash for Infallible
source impl Ord for Infallible 
 
impl Ord for Infallible
source fn cmp(&self, _other: &Infallible) -> Ordering 
 
fn cmp(&self, _other: &Infallible) -> Ordering
1.21.0 · source fn max(self, other: Self) -> Self
 
fn max(self, other: Self) -> Self
Compares and returns the maximum of two values. Read more
1.21.0 · source fn min(self, other: Self) -> Self
 
fn min(self, other: Self) -> Self
Compares and returns the minimum of two values. Read more
1.50.0 · source fn clamp(self, min: Self, max: Self) -> Self where
  Self: PartialOrd<Self>, 
 
fn clamp(self, min: Self, max: Self) -> Self where
  Self: PartialOrd<Self>, 
Restrict a value to a certain interval. Read more
source impl PartialEq<Infallible> for Infallible 
 
impl PartialEq<Infallible> for Infallible
source impl PartialOrd<Infallible> for Infallible 
 
impl PartialOrd<Infallible> for Infallible
source fn partial_cmp(&self, _other: &Infallible) -> Option<Ordering>
 
fn partial_cmp(&self, _other: &Infallible) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more 
1.0.0 · source fn lt(&self, other: &Rhs) -> bool 
 
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more 
1.0.0 · source fn le(&self, other: &Rhs) -> bool 
 
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more 
1.61.0 · source impl Termination for Infallible 
 
impl Termination 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 T where
  T: ?Sized, 
 
impl<T> BorrowMut<T> for T where
  T: ?Sized, 
const: unstable  · source fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more