Crate error_chain_mini

Source
Expand description

This library provides very simple chainable error type ChainedError and some related traits.

§Example

extern crate error_chain_mini;
#[macro_use]
extern crate error_chain_mini_derive;
use std::io;
use error_chain_mini::*;
#[derive(ErrorKind)]
enum MyErrorKind {
    #[msg(short = "io error", detailed = "inner: {:?}", _0)]
    IoError(io::Error),
    #[msg(short = "index error", detailed = "invalid index: {:?}", _0)]
    IndexEroor(usize),
    #[msg(short = "trivial error")]
    TrivialError,
}
type MyError = ChainedError<MyErrorKind>;
type MyResult<T> = Result<T, MyError>;
fn always_fail() -> MyResult<()> {
    Err(MyErrorKind::TrivialError.into_with(|| "Oh my god!"))
}
fn main() {
    assert_eq!("index error { invalid index: 10 }", MyErrorKind::IndexEroor(10).full());
    let chained = always_fail().chain_err(|| "Error in main()");
    assert!(chained.is_err());
    if let Err(chained) = chained {
        let mut cxts = chained.contexts();
        assert_eq!(cxts.next().unwrap(), "Oh my god!");
        assert_eq!(cxts.next().unwrap(), "Error in main()");
    }
}

Structs§

ChainedError
Chainable error type.

Traits§

ErrorContext
Error context type.
ErrorKind
Error kind type.
ResultExt
Result extension to integrate with ChainedError