summaryrefslogtreecommitdiffstats
path: root/rust/vendor/failure/examples/simple.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/vendor/failure/examples/simple.rs')
-rw-r--r--rust/vendor/failure/examples/simple.rs22
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);
+ }
+}