diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2019-02-24 10:48:36 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2019-02-24 10:48:36 +0100 |
commit | 376d9c1896d6e23970071a6e9da01f9f0842c0d0 (patch) | |
tree | e93ede8da01fe7d931d19b0b30b0dfbc4d66c1ca /src/error.rs | |
parent | d64eb2a487f3e195bfdded2bf98d55405301d3ef (diff) | |
download | oslobike-376d9c1896d6e23970071a6e9da01f9f0842c0d0.tar.gz oslobike-376d9c1896d6e23970071a6e9da01f9f0842c0d0.tar.bz2 oslobike-376d9c1896d6e23970071a6e9da01f9f0842c0d0.zip |
Let errors propagate out of main too.
Makes error messages from the program slightly nicer, but still a
bit cryptic for the casual user.
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs index ed17362..b0ab95d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -27,6 +27,26 @@ pub enum Error { JsonError(serde_json::error::Error), } +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Error::InvalidHeaderValue(e) => e.fmt(f), + Error::ReqwestError(e) => e.fmt(f), + Error::JsonError(e) => e.fmt(f), + } + } +} + +impl std::error::Error for Error { + fn cause(&self) -> Option<&std::error::Error> { + match self { + Error::InvalidHeaderValue(e) => Some(e), + Error::ReqwestError(e) => Some(e), + Error::JsonError(e) => Some(e), + } + } +} + impl From<reqwest::header::InvalidHeaderValue> for Error { fn from(err: reqwest::header::InvalidHeaderValue) -> Error { Error::InvalidHeaderValue(err) |