diff options
Diffstat (limited to 'rust/vendor/failure/examples/simple.rs')
-rw-r--r-- | rust/vendor/failure/examples/simple.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/rust/vendor/failure/examples/simple.rs b/rust/vendor/failure/examples/simple.rs new file mode 100644 index 0000000..fc39601 --- /dev/null +++ b/rust/vendor/failure/examples/simple.rs @@ -0,0 +1,22 @@ +#[macro_use] +extern crate failure; + +use failure::Fail; + +#[derive(Debug, Fail)] +#[fail(display = "my error")] +struct MyError; + +#[derive(Debug, Fail)] +#[fail(display = "my wrapping error")] +struct WrappingError(#[fail(cause)] MyError); + +fn bad_function() -> Result<(), WrappingError> { + Err(WrappingError(MyError)) +} + +fn main() { + for cause in Fail::iter_chain(&bad_function().unwrap_err()) { + println!("{}: {}", cause.name().unwrap_or("Error"), cause); + } +} |