pub struct Err { /* private fields */ }
Expand description
The error type used within the Sabi framework.
It holds a value of any type that represents the reason for the error. By the reason, it is possible to identify the error or retrieve the detailed information about the error.
Implementations§
Source§impl Err
impl Err
Sourcepub fn new<R>(reason: R) -> Self
pub fn new<R>(reason: R) -> Self
Creates a new error with the value reprenents the reason.
use sabi::Err;
#[derive(Debug)]
enum Reasons {
IllegalState { state: String },
}
let err = Err::new(Reasons::IllegalState { state: "bad state".to_string() });
Sourcepub fn with_source<R, E>(reason: R, source: E) -> Self
pub fn with_source<R, E>(reason: R, source: E) -> Self
Creates a new error with the value reprenents the reason and the source error that causes this error.
use sabi::Err;
use std::io;
#[derive(Debug)]
enum Reasons {
FailToDoSomething,
}
let io_error = io::Error::other("oh no!");
let err = Err::with_source(Reasons::FailToDoSomething, io_error);
Sourcepub fn is_reason<R>(&self) -> bool
pub fn is_reason<R>(&self) -> bool
Checks if R
is the type of the reason held by this error object.
use sabi::Err;
#[derive(Debug)]
enum Reasons {
IllegalState { state: String },
}
let err = Err::new(Reasons::IllegalState { state: "bad state".to_string() });
assert!(err.is_reason::<Reasons>());
assert!(err.is_reason::<String>() == false);
Sourcepub fn reason<R>(&self) -> Result<&R, &Self>
pub fn reason<R>(&self) -> Result<&R, &Self>
Gets the reason value if the type of the reason is R
.
use sabi::Err;
#[derive(Debug)]
enum Reasons {
IllegalState { state: String },
}
let err = Err::new(Reasons::IllegalState { state: "bad state".to_string() });
match err.reason::<Reasons>() {
Ok(r) => match r {
Reasons::IllegalState { state } => println!("state = {state}"),
_ => { /* ... */ }
}
Err(err) => match err.reason::<String>() {
Ok(s) => println!("string reason = {s}"),
Err(_err) => { /* ... */ }
}
}
Sourcepub fn match_reason<R>(&self, func: fn(&R)) -> &Self
pub fn match_reason<R>(&self, func: fn(&R)) -> &Self
Checks the type of the reason held by this object, and if it matches, executes the provided function.
use sabi::Err;
#[derive(Debug)]
enum Reasons {
IllegalState { state: String },
}
let err = Err::new(Reasons::IllegalState { state: "bad state".to_string() });
err.match_reason::<Reasons>(|r| match r {
Reasons::IllegalState { state } => println!("state = {state}"),
_ => { /* ... */ }
})
.match_reason::<String>(|s| {
println!("string reason = {s}");
});
Trait Implementations§
Source§impl Error for Err
impl Error for Err
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for Err
impl !RefUnwindSafe for Err
impl !Send for Err
impl !Sync for Err
impl Unpin for Err
impl !UnwindSafe for Err
Blanket Implementations§
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