Crate orfail

Crate orfail 

Source
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, and Vec of those)
      • Portable across process and language boundaries
    • 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#"expected `true` but got `false`
  at src/lib.rs:8
  at src/lib.rs:13
"#.to_owned()));

Structs§

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

Traits§

OrFail
This trait allows for converting a value into Result<_, Failure>.

Type Aliases§

Result
This crate specific Result type.