# 1.0.0[−][src]Trait std::error::Error

    pub trait Error: Debug + Display {
        fn description(&self) -> &str { ... }
        fn cause(&self) -> Option<&dyn Error> { ... }
        fn source(&self) -> Option<&(dyn Error + 'static)> { ... }
    }

`Error` is a trait representing the basic expectations for error values, i.e. values of type `E` in `Result<T, E>`. Errors must describe themselves through the `Display` and `Debug` traits, and may provide cause chain information:

The `cause` method is generally used when errors cross "abstraction boundaries", i.e. when a one module must report an error that is "caused" by an error from a lower-level module. This setup makes it possible for the high-level module to provide its own errors that do not commit to any particular implementation, but also reveal some of its implementation for debugging via `cause` chains.

## Provided Methods

### `fn description(&self) -> &str`

This method is soft-deprecated.

Although using it won’t cause compilation warning, new code should use `Display` instead and new `impl`s can omit it.

To obtain error description as a string, use `to_string()`.

# Examples

    match "xc".parse::<u32>() {
        Err(e) => {
            // Print `e` itself, not `e.description()`.
            println!("Error: {}", e);
        }
        _ => println!("No error"),
    }Run

### `fn cause(&self) -> Option<&dyn Error>`

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

The lower-level cause of this error, if any.

# Examples

    use std::error::Error;
    use std::fmt;

    #[derive(Debug)]
    struct SuperError {
        side: SuperErrorSideKick,
    }

    impl fmt::Display for SuperError {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "SuperError is here!")
        }
    }

    impl Error for SuperError {
        fn description(&self) -> &str {
            "I'm the superhero of errors"
        }

        fn cause(&self) -> Option<&Error> {
            Some(&self.side)
        }
    }

    #[derive(Debug)]
    struct SuperErrorSideKick;

    impl fmt::Display for SuperErrorSideKick {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "SuperErrorSideKick is here!")
        }
    }

    impl Error for SuperErrorSideKick {
        fn description(&self) -> &str {
            "I'm SuperError side kick"
        }
    }

    fn get_super_error() -> Result<(), SuperError> {
        Err(SuperError { side: SuperErrorSideKick })
    }

    fn main() {
        match get_super_error() {
            Err(e) => {
                println!("Error: {}", e.description());
                println!("Caused by: {}", e.cause().unwrap());
            }
            _ => println!("No error"),
        }
    }Run

### `fn source(&self) -> Option<&(dyn Error + 'static)>`
1.30.0

The lower-level source of this error, if any.

# Examples

    use std::error::Error;
    use std::fmt;

    #[derive(Debug)]
    struct SuperError {
        side: SuperErrorSideKick,
    }

    impl fmt::Display for SuperError {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "SuperError is here!")
        }
    }

    impl Error for SuperError {
        fn description(&self) -> &str {
            "I'm the superhero of errors"
        }

        fn source(&self) -> Option<&(dyn Error + 'static)> {
            Some(&self.side)
        }
    }

    #[derive(Debug)]
    struct SuperErrorSideKick;

    impl fmt::Display for SuperErrorSideKick {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "SuperErrorSideKick is here!")
        }
    }

    impl Error for SuperErrorSideKick {
        fn description(&self) -> &str {
            "I'm SuperError side kick"
        }
    }

    fn get_super_error() -> Result<(), SuperError> {
        Err(SuperError { side: SuperErrorSideKick })
    }

    fn main() {
        match get_super_error() {
            Err(e) => {
                println!("Error: {}", e.description());
                println!("Caused by: {}", e.source().unwrap());
            }
            _ => println!("No error"),
        }
    }Run

## Methods

###

`impl dyn Error + 'static`

[src]

####

`pub fn is<T: Error + 'static>(&self) -> bool`

1.3.0
[src]

Returns true if the boxed type is the same as `T`

####

`pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>`

1.3.0
[src]

Returns some reference to the boxed value if it is of type `T`, or `None` if it isn't.

####

`pub fn downcast_mut<T: Error + 'static>(&mut self) -> Option<&mut T>`

1.3.0
[src]

Returns some mutable reference to the boxed value if it is of type `T`, or `None` if it isn't.

###

`impl dyn Error + Send + 'static`

[src]

####

`pub fn is<T: Error + 'static>(&self) -> bool`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

####

`pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

####

`pub fn downcast_mut<T: Error + 'static>(&mut self) -> Option<&mut T>`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

###

`impl dyn Error + Send + Sync + 'static`

[src]

####

`pub fn is<T: Error + 'static>(&self) -> bool`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

####

`pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

####

`pub fn downcast_mut<T: Error + 'static>(&mut self) -> Option<&mut T>`

1.3.0
[src]

Forwards to the method defined on the type `Any`.

###

`impl dyn Error`

[src]

####

`pub fn downcast<T: Error + 'static>( self: Box<Self> ) -> Result<Box<T>, Box<dyn Error>>`

1.3.0
[src]

Attempt to downcast the box to a concrete type.

###

`impl dyn Error + Send`

[src]

####

`pub fn downcast<T: Error + 'static>( self: Box<Self> ) -> Result<Box<T>, Box<dyn Error + Send>>`

1.3.0
[src]

Attempt to downcast the box to a concrete type.

###

`impl dyn Error + Send + Sync`

[src]

####

`pub fn downcast<T: Error + 'static>( self: Box<Self> ) -> Result<Box<T>, Box<Self>>`

1.3.0
[src]

Attempt to downcast the box to a concrete type.

## Implementations on Foreign Types

###

`impl Error for TryFromSliceError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

## Implementors

###

`impl Error for VarError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for ParseError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for RecvTimeoutError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for TryRecvError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for !`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for AllocErr`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for CannotReallocInPlace`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for LayoutErr`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for BorrowError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for BorrowMutError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for CharTryFromError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for DecodeUtf16Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for ParseCharError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for JoinPathsError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for FromBytesWithNulError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for IntoStringError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for NulError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for std::fmt::Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for std::io::Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for AddrParseError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for ParseFloatError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for ParseIntError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for TryFromIntError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for StripPrefixError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for ParseBoolError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for Utf8Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for FromUtf16Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for FromUtf8Error`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for RecvError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl Error for SystemTimeError`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

1.0.0
[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<T> Error for TryLockError<T>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<T> Error for PoisonError<T>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<T: Error> Error for Box<T>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<T: Send> Error for TrySendError<T>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<T: Send> Error for SendError<T>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

###

`impl<W: Send + Debug> Error for IntoInnerError<W>`

[src]

####

`fn description(&self) -> &str`

[src]

####

`fn cause(&self) -> Option<&dyn Error>`

[src]

Deprecating in 1.33.0

: replaced by Error::source, which can support downcasting

####

`fn source(&self) -> Option<&(dyn Error + 'static)>`

1.30.0
[src]

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)