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 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§
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§impl IntoError<Error> for Intermediate
impl IntoError<Error> for Intermediate
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