pub enum Error {
Leaf {
user_id: i32,
},
Intermediate {
source: Error,
},
}
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§
Trait Implementations§
source§impl Error for Error
impl Error for Error
source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
source§fn cause(&self) -> Option<&dyn Error>
fn cause(&self) -> Option<&dyn Error>
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§impl ErrorCompat for Error
impl ErrorCompat for Error
source§fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘ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 moresource§impl IntoError<Error> for IntermediateSnafu
impl IntoError<Error> for IntermediateSnafu
Auto Trait Implementations§
impl Freeze for Error
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations§
source§impl<T> AsErrorSource for Twhere
T: Error + 'static,
impl<T> AsErrorSource for Twhere
T: Error + 'static,
source§fn 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.
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more