Enum snafu::guide::examples::basic::Error[][src]

pub enum Error {
    Leaf {
        user_id: i32,
    },
    Intermediate {
        source: Error,
    },
}

An enumeration of possible errors.

This will create a number of context selectors:

Leaf errors

Context selectors for error variants without a source, such as Leaf, have methods to construct them, such as Leaf::build or Leaf::fail. The ensure macro also accepts these kinds of context selectors.

use snafu::ensure;

fn always_fails() -> Result<(), Error> {
    Leaf { user_id: 42 }.fail()
}

fn sometimes_fails(user_id: i32) -> Result<(), Error> {
    ensure!(user_id > 0, Leaf { user_id });
    Ok(())
}

Intermediate errors

Context selectors for error variants with a source, such as Intermediate, are intended to be used with the ResultExt::context family of methods.

use snafu::ResultExt;

fn load_config_file() -> Result<usize, Error> {
    let config = std::fs::read_to_string("/path/to/my/config/file").context(Intermediate)?;
    Ok(config.len())
}

Variants

Leaf

Fields of Leaf

user_id: i32
Intermediate

Fields of Intermediate

source: Error

Trait Implementations

impl Debug for Error[src]

impl Display for Error[src]

impl Error for Error where
    Self: Debug + Display
[src]

impl ErrorCompat for Error[src]

impl<__T0> IntoError<Error> for Leaf<__T0> where
    Error: Error + ErrorCompat,
    __T0: Into<i32>, 
[src]

type Source = NoneError

The underlying error

impl IntoError<Error> for Intermediate where
    Error: Error + ErrorCompat
[src]

type Source = Error

The underlying error

Auto Trait Implementations

impl !RefUnwindSafe for Error

impl Send for Error

impl Sync for Error

impl Unpin for Error

impl !UnwindSafe for Error

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> AsErrorSource for T where
    T: 'static + Error
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.