Trait std::error::Error1.0.0 [] [src]

pub trait Error: Debug + Display + Reflect {
    fn description(&self) -> &str;

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

Base functionality for all errors in Rust.

Required Methods

fn description(&self) -> &str

A short description of the error.

The description should not contain newlines or sentence-ending punctuation, to facilitate embedding in larger user-facing strings.

Examples

fn main() { use std::error::Error; match "xc".parse::<u32>() { Err(e) => { println!("Error: {}", e.description()); } _ => println!("No error"), } }
use std::error::Error;

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

Provided Methods

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

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"), } }
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"),
    }
}

Methods

impl Error + 'static
[src]

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

Returns true if the boxed type is the same as T

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

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

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

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

impl Error + 'static + Send
[src]

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

Forwards to the method defined on the type Any.

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

Forwards to the method defined on the type Any.

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

Forwards to the method defined on the type Any.

impl Error + 'static + Send + Sync
[src]

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

Forwards to the method defined on the type Any.

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

Forwards to the method defined on the type Any.

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

Forwards to the method defined on the type Any.

impl Error
[src]

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

Attempt to downcast the box to a concrete type.

impl Error + Send
[src]

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

Attempt to downcast the box to a concrete type.

impl Error + Send + Sync
[src]

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

Attempt to downcast the box to a concrete type.

Implementors