std::error::Error - Rust (original) (raw)

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

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

fn [cause](#method.cause)(&self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<&[Error](../../std/error/trait.Error.html "trait std::error::Error")> { ... }

}

Base functionality for all errors in Rust.

fn [description](#tymethod.description)(&self) -> &[str](../primitive.str.html)

A short description of the error.

The description should only be used for a simple message. It should not contain newlines or sentence-ending punctuation, to facilitate embedding in larger user-facing strings. For showing formatted error messages with more information seeDisplay.

use std::error::Error;

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

fn [cause](#method.cause)(&self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<&[Error](../../std/error/trait.Error.html "trait std::error::Error")>

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

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

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static[src]

pub fn [is](#method.is)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [bool](../primitive.bool.html)

1.3.0

[src]

Returns true if the boxed type is the same as T

pub fn [downcast_ref](#method.downcast%5Fref)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&](../primitive.reference.html)T>

1.3.0

[src]

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

pub fn [downcast_mut](#method.downcast%5Fmut)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&mut self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&mut ](../primitive.reference.html)T>

1.3.0

[src]

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

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") + [Send](../../std/marker/trait.Send.html "trait std:📑:Send") + 'static[src]

pub fn [is](#method.is-1)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [bool](../primitive.bool.html)

1.3.0

[src]

Forwards to the method defined on the type Any.

pub fn [downcast_ref](#method.downcast%5Fref-1)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&](../primitive.reference.html)T>

1.3.0

[src]

Forwards to the method defined on the type Any.

pub fn [downcast_mut](#method.downcast%5Fmut-1)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&mut self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&mut ](../primitive.reference.html)T>

1.3.0

[src]

Forwards to the method defined on the type Any.

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") + [Send](../../std/marker/trait.Send.html "trait std:📑:Send") + [Sync](../../std/marker/trait.Sync.html "trait std:📑:Sync") + 'static[src]

pub fn [is](#method.is-2)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [bool](../primitive.bool.html)

1.3.0

[src]

Forwards to the method defined on the type Any.

pub fn [downcast_ref](#method.downcast%5Fref-2)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&](../primitive.reference.html)T>

1.3.0

[src]

Forwards to the method defined on the type Any.

pub fn [downcast_mut](#method.downcast%5Fmut-2)<T: [Error](../../std/error/trait.Error.html "trait std::error::Error") + 'static>(&mut self) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[&mut ](../primitive.reference.html)T>

1.3.0

[src]

Forwards to the method defined on the type Any.

impl [Error](../../std/error/trait.Error.html "trait std::error::Error")[src]

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") + [Send](../../std/marker/trait.Send.html "trait std:📑:Send")[src]

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") + [Send](../../std/marker/trait.Send.html "trait std:📑:Send") + [Sync](../../std/marker/trait.Sync.html "trait std:📑:Sync")[src]

`pub fn downcast<T: Error + 'static>(

self: Box
) -> Result<Box, Box>`

1.3.0

[src]

Attempt to downcast the box to a concrete type.

impl [Error](../../std/error/trait.Error.html "trait std::error::Error") for [TryFromSliceError](../../core/array/struct.TryFromSliceError.html "struct core::array::TryFromSliceError")[src]