diff --git a/src/lib.rs b/src/lib.rs
index 09df831..b052a53 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -462,31 +462,19 @@ impl ChainErrorDown for dyn Error + 'static + Send + Sync {
 
 impl<T: 'static + Display + Debug> Error for ChainError<T> {
     fn source(&self) -> Option<&(dyn Error + 'static)> {
-        if let Some(ref e) = self.error_cause {
-            Some(e.as_ref())
-        } else {
-            None
-        }
+        self.error_cause.as_ref().map(|e| e.as_ref())
     }
 }
 
 impl<T: 'static + Display + Debug> Error for &ChainError<T> {
     fn source(&self) -> Option<&(dyn Error + 'static)> {
-        if let Some(ref e) = self.error_cause {
-            Some(e.as_ref())
-        } else {
-            None
-        }
+        self.error_cause.as_ref().map(|e| e.as_ref())
     }
 }
 
 impl<T: 'static + Display + Debug> Error for &mut ChainError<T> {
     fn source(&self) -> Option<&(dyn Error + 'static)> {
-        if let Some(ref e) = self.error_cause {
-            Some(e.as_ref())
-        } else {
-            None
-        }
+        self.error_cause.as_ref().map(|e| e.as_ref())
     }
 }