Enum snafu::guide::examples::basic::Error [−][src]
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
Fields of Leaf
user_id: i32
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][+]
Self: Debug + Display,
impl ErrorCompat for Error
[src][+]
impl<__T0> IntoError<Error> for Leaf<__T0> where
Error: Error + ErrorCompat,
__T0: Into<i32>,
[src][+]
Error: Error + ErrorCompat,
__T0: Into<i32>,
impl IntoError<Error> for Intermediate where
Error: Error + ErrorCompat,
[src][+]
Error: Error + ErrorCompat,
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][+]
T: 'static + ?Sized,
impl<T> AsErrorSource for T where
T: 'static + Error,
[src][+]
T: 'static + Error,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src][+]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,