spectacles_brokers/
errors.rs

1use std::{
2    error::Error as StdError,
3    fmt::{Display, Formatter, Result as FmtResult},
4    io::Error as IoError,
5};
6
7use failure::{Compat, Fail};
8use lapin_futures_native_tls::{
9    error::Error as LapinTlsError,
10    lapin::error::Error as LapinError,
11};
12
13/// Details the various errors of the crate.
14#[derive(Debug)]
15pub enum Error {
16    Lapin(Compat<LapinError>),
17    LapinTls(Compat<LapinTlsError>),
18    Io(IoError)
19}
20
21impl Display for Error {
22    fn fmt(&self, f: &mut Formatter) -> FmtResult {
23        f.write_str(self.description())
24    }
25}
26
27impl StdError for Error {
28    fn description(&self) -> &str {
29        match self {
30            Error::Lapin(e) => e.description(),
31            Error::LapinTls(e) => e.description(),
32            Error::Io(e) => e.description()
33        }
34    }
35}
36
37impl From<LapinError> for Error {
38    fn from(err: LapinError) -> Self {
39        Error::Lapin(err.compat())
40    }
41}
42
43impl From<LapinTlsError> for Error {
44    fn from(err: LapinTlsError) -> Self {
45        Error::LapinTls(err.compat())
46    }
47}
48
49
50impl From<IoError> for Error {
51    fn from(err: IoError) -> Self {
52        Error::Io(err)
53    }
54}