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