1.0.0[][src]Trait peroxide::structure::matrix::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 impls 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"),
}

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

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

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

Methods

impl dyn Error + 'static
[src]

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0
[src]

Returns true if the boxed type is the same as T

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
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>(&mut self) -> Option<&mut T> where
    T: 'static + Error
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 + 'static + Send
[src]

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

pub fn downcast_mut<T>(&mut self) -> Option<&mut T> where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

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

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

pub fn downcast_mut<T>(&mut self) -> Option<&mut T> where
    T: 'static + Error
1.3.0
[src]

Forwards to the method defined on the type Any.

impl dyn Error + 'static
[src]

pub fn downcast<T>(
    self: Box<dyn Error + 'static>
) -> Result<Box<T>, Box<dyn Error + 'static>> where
    T: 'static + Error
1.3.0
[src]

Attempt to downcast the box to a concrete type.

impl dyn Error + 'static + Send
[src]

pub fn downcast<T>(
    self: Box<dyn Error + 'static + Send>
) -> Result<Box<T>, Box<dyn Error + 'static + Send>> where
    T: 'static + Error
1.3.0
[src]

Attempt to downcast the box to a concrete type.

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

pub fn downcast<T>(
    self: Box<dyn Error + 'static + Sync + Send>
) -> Result<Box<T>, Box<dyn Error + 'static + Sync + Send>> where
    T: 'static + Error
1.3.0
[src]

Attempt to downcast the box to a concrete type.

Implementations on Foreign Types

impl Error for BorrowMutError
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for !
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 SendError<T> where
    T: Send
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for IntoStringError
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for RecvTimeoutError
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl<T> Error for TryLockError<T>
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for DecodeUtf16Error
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl<W> Error for IntoInnerError<W> where
    W: Send + Debug
[src]

fn cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 TrySendError<T> where
    T: Send
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl<T> Error for PoisonError<T>
[src]

fn cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 TryFromSliceError
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 Error
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for Utf8Error
[src]

fn cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 VarError
[src]

fn cause(&self) -> Option<&dyn Error>
[src]

Deprecated since 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 Box<T> where
    T: Error
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for StripPrefixError
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 Error
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for Error
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for FromUtf8Error
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for Utf8Error
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl<W> Error for IntoInnerError<W> where
    W: Any
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

impl Error for DeserializeError
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 Error
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 TimerError
[src]

fn cause(&self) -> Option<&dyn Error>
1.0.0
[src]

Deprecated since 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 Error
[src]

fn source(&self) -> Option<&(dyn Error + 'static)>
1.30.0
[src]

Loading content...

Implementors

Loading content...