Expand description

An error handling library for portable unrecoverable errors.

This crate provides,

  • Failure struct that represents an unrecoverable error with an error code, message and user-level backtrace
    • Error code and message are optional
    • Constituted with simple types (u32, String, and Vec of those)
      • Portable across process and language boundaries
      • Optional [serde] support (“serde” feature)
    • Doesn’t implement std::error::Error trait
  • OrFail trait

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#"failed due to "expected `true` but got `false`"
  at src/lib.rs:7
  at src/lib.rs:12
"#.to_owned()));

Macros

Similar to std::todo!() but returning an Err(Failure) instead of panicking.
Similar to std::unreachable!() but returning an Err(Failure) instead of panicking.

Structs

Failure typically represents an unrecoverable error with an error code, message, and backtrace.
A location in the backtrace of a Failure instance.

Traits

This trait allows for returning an error code held by Failure.
This trait allows for converting a value into Result<_, Failure>.
A marker trait representing that C can be converted into the type implementing this trait.

Type Definitions

This crate specific Result type.