Crate error_chain_mini[][src]

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