Enum snafu::guide::examples::basic::Error [−][src]
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
Fields of Leaf
user_id: i32
Fields of Intermediate
source: Error
Trait Implementations
👎 Deprecated since 1.42.0:
use the Display impl or to_string()
👎 Deprecated since 1.33.0:
replaced by Error::source, which can support downcasting
The lower-level source of this error, if any. Read more
fn 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,
Notable traits for ChainCompat<'a>
impl<'a> Iterator for ChainCompat<'a> type Item = &'a dyn Error;
Returns an iterator for traversing the chain of errors,
starting with the current error
and continuing with recursive calls to Error::source
. Read more