From 694cb4f27314755c9af12c1f2fd7c7cd90de172c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 26 Jan 2019 10:44:25 +0100
Subject: [PATCH] add find_chain_or_cause()

---
 src/lib.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/lib.rs b/src/lib.rs
index 3a51d1e..e89a848 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -290,6 +290,16 @@ impl<T: 'static + Display + Debug> ChainError<T> {
             .next()
     }
 
+    // FIXME: naming
+    fn find_chain_or_cause<U: Error + 'static>(&self) -> Option<&U> {
+        self.iter()
+            .filter_map(|e| {
+                e.downcast_ref::<ChainError<U>>().map(|e| e.kind())
+                    .or_else(|| e.downcast_ref::<U>())
+            })
+            .next()
+    }
+
     /** return a reference to T of `ChainError<T>`
 
     # Examples