pub struct Whatever { /* private fields */ }
Expand description
A basic error type that you can use as a first step to better error handling.
You can use this type in your own application as a quick way to create errors or add basic context to another error. This can also be used in a library, but consider wrapping it in an opaque error to avoid putting the SNAFU crate in your public API.
Examples
use snafu::prelude::*;
type Result<T, E = snafu::Whatever> = std::result::Result<T, E>;
fn subtract_numbers(a: u32, b: u32) -> Result<u32> {
if a > b {
Ok(a - b)
} else {
whatever!("Can't subtract {} - {}", a, b)
}
}
fn complicated_math(a: u32, b: u32) -> Result<u32> {
let val = subtract_numbers(a, b).whatever_context("Can't do the math")?;
Ok(val * 2)
}
See whatever!
for detailed usage instructions.
Limitations
When wrapping errors, only the backtrace from the shallowest
function is guaranteed to be available. If you need the deepest
possible trace, consider creating a custom error type and using
#[snafu(backtrace)]
on the source
field. If a best-effort attempt is
sufficient, see the backtrace
method.
When the standard library stabilizes backtrace support, this behavior may change.
Implementations
Trait Implementations
sourceimpl Error for Whatever where
Self: Debug + Display,
impl Error for Whatever where
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 Whatever
impl ErrorCompat for Whatever
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 FromString for Whatever
impl FromString for Whatever
Auto Trait Implementations
impl !RefUnwindSafe for Whatever
impl !Send for Whatever
impl !Sync for Whatever
impl Unpin for Whatever
impl !UnwindSafe for Whatever
Blanket Implementations
sourceimpl<T> AsErrorSource for T where
T: 'static + Error,
impl<T> AsErrorSource for T where
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 T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
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