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 support for the provide API, this behavior may change.
§Thread Safety
This type requires that contained errors implement Send and
Sync. If this is burdensome, you may also use
WhateverLocal.
Implementations§
Trait Implementations§
Source§impl Error for Whatever
impl Error for Whatever
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl ErrorCompat for Whatever
impl ErrorCompat for Whatever
Source§fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_, '_> ⓘwhere
Self: AsErrorSource,
Error::source. Read more