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 |
|