Expand description
An error handling library for portable unrecoverable errors.
This crate provides,
Failure
struct that represents an unrecoverable error with an error message and user-level backtrace- Constituted with simple types (
u32
,String
, andVec
of those)- Portable across process and language boundaries
- Optional
serde
support (“serde” feature)
- Doesn’t implement
std::error::Error
trait
- Constituted with simple types (
OrFail
trait- Backtrace location is appended to
Failure
each time when callingOrFail::or_fail()
bool
,Option<_>
andResult<_, _>
implementOrFail
- Backtrace location is appended to
Examples
use orfail::{OrFail, Result};
fn check_non_zero(n: isize) -> Result<()> {
(n != 0).or_fail()?;
Ok(())
}
fn safe_div(x: isize, y: isize) -> Result<isize> {
check_non_zero(y).or_fail()?;
Ok(x / y)
}
// OK
assert_eq!(safe_div(4, 2), Ok(2));
// NG
assert_eq!(safe_div(4, 0).err().map(|e| e.to_string()),
Some(
r#"expected `true` but got `false`
at src/lib.rs:8
at src/lib.rs:13
"#.to_owned()));
Structs
Failure
represents an unrecoverable error with an error message, and backtrace.- A location in the backtrace of a
Failure
instance.
Traits
- This trait allows for converting a value into
Result<_, Failure>
.
Type Definitions
- This crate specific
Result
type.