error: implement std::error::Error.

Emmanuel Gil Peyrot created

Change summary

src/util/error.rs | 15 +++++++++++++++
1 file changed, 15 insertions(+)

Detailed changes

src/util/error.rs 🔗

@@ -8,6 +8,7 @@ use base64;
 use chrono;
 use jid;
 use std::convert::From;
+use std::error::Error as StdError;
 use std::fmt;
 use std::net;
 use std::num;
@@ -46,6 +47,20 @@ pub enum Error {
     ChronoParseError(chrono::ParseError),
 }
 
+impl StdError for Error {
+    fn cause(&self) -> Option<&dyn StdError> {
+        match self {
+            Error::ParseError(_) => None,
+            Error::Base64Error(e) => Some(e),
+            Error::ParseIntError(e) => Some(e),
+            Error::ParseStringError(e) => Some(e),
+            Error::ParseAddrError(e) => Some(e),
+            Error::JidParseError(e) => Some(e),
+            Error::ChronoParseError(e) => Some(e),
+        }
+    }
+}
+
 impl fmt::Display for Error {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
         match self {