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§
- Chained
Error - Chainable error type.
Traits§
- Error
Context - Error context type.
- Error
Kind - Error kind type.
- Result
Ext Result
extension to integrate withChainedError