Expand description
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 LeafSnafu
, have methods to construct them, such as
LeafSnafu::build
or LeafSnafu::fail
. The ensure
macro also
accepts these kinds of context selectors.
use snafu::prelude::*;
fn always_fails() -> Result<(), Error> {
LeafSnafu { user_id: 42 }.fail()
}
fn sometimes_fails(user_id: i32) -> Result<(), Error> {
ensure!(user_id > 0, LeafSnafu { user_id });
Ok(())
}
Intermediate errors
Context selectors for error variants with a source
, such as
IntermediateSnafu
, are intended to be used with the
ResultExt::context
family of methods.
use snafu::prelude::*;
fn load_config_file() -> Result<usize, Error> {
let config = std::fs::read_to_string("/path/to/my/config/file").context(IntermediateSnafu)?;
Ok(config.len())
}
Variants
Leaf
Fields
user_id: i32
Intermediate
Fields
source: Error
Trait Implementations
sourceimpl Error for Errorwhere
Self: Debug + Display,
impl Error for Errorwhere
Self: Debug + Display,
sourcefn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
sourcefn cause(&self) -> Option<&dyn Error>
fn cause(&self) -> Option<&dyn Error>
replaced by Error::source, which can support downcasting
sourceimpl ErrorCompat for Error
impl ErrorCompat for Error
sourcefn iter_chain(&self) -> ChainCompat<'_>ⓘNotable traits for ChainCompat<'a>impl<'a> Iterator for ChainCompat<'a> type Item = &'a dyn Error;
where
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_>ⓘNotable traits for ChainCompat<'a>impl<'a> Iterator for ChainCompat<'a> type Item = &'a dyn Error;
where
Self: AsErrorSource,
Returns an iterator for traversing the chain of errors,
starting with the current error
and continuing with recursive calls to Error::source
. Read more
sourceimpl IntoError<Error> for IntermediateSnafuwhere
Error: Error + ErrorCompat,
impl IntoError<Error> for IntermediateSnafuwhere
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
sourceimpl<T> AsErrorSource for Twhere
T: 'static + Error,
impl<T> AsErrorSource for Twhere
T: 'static + Error,
sourcefn as_error_source(&self) -> &(dyn Error + 'static)
fn as_error_source(&self) -> &(dyn Error + 'static)
For maximum effectiveness, this needs to be called as a method to benefit from Rust’s automatic dereferencing of method receivers. Read more
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more