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 Errorwhere
Self: Debug + Display,
impl Error for Errorwhere
Self: Debug + Display,
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 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§
source§impl<T> AsErrorSource for Twhere
T: 'static + Error,
impl<T> AsErrorSource for Twhere
T: 'static + Error,
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. Read more