slack_rust/
error.rs

1use std::fmt;
2
3#[derive(Debug)]
4pub enum Error {
5    InvalidInputError,
6    IOError(std::io::Error),
7    NotFoundDomain,
8    NotFoundStream,
9    SerdeJsonError(serde_json::Error),
10    SocketModeOpenConnectionError,
11    SurfError(surf::Error),
12    UrlParseError(url::ParseError),
13    WebSocketError(async_tungstenite::tungstenite::Error),
14}
15
16impl From<std::io::Error> for Error {
17    fn from(err: std::io::Error) -> Error {
18        Error::IOError(err)
19    }
20}
21
22impl From<serde_json::Error> for Error {
23    fn from(err: serde_json::Error) -> Error {
24        Error::SerdeJsonError(err)
25    }
26}
27
28impl From<surf::Error> for Error {
29    fn from(err: surf::Error) -> Error {
30        Error::SurfError(err)
31    }
32}
33
34impl From<url::ParseError> for Error {
35    fn from(err: url::ParseError) -> Error {
36        Error::UrlParseError(err)
37    }
38}
39
40impl From<async_tungstenite::tungstenite::Error> for Error {
41    fn from(err: async_tungstenite::tungstenite::error::Error) -> Error {
42        Error::WebSocketError(err)
43    }
44}
45
46impl fmt::Display for Error {
47    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48        match *self {
49            Error::InvalidInputError => write!(f, "Invalid Input Error"),
50            Error::IOError(ref e) => write!(f, "IO Error: {}", e),
51            Error::NotFoundDomain => write!(f, "NotFound Domain Error"),
52            Error::NotFoundStream => write!(f, "NotFound Stream Error"),
53            Error::SerdeJsonError(ref e) => write!(f, "Serde Json Error: {}", e),
54            Error::SocketModeOpenConnectionError => write!(f, "SocketMode OpenConnection Error"),
55            Error::SurfError(ref e) => write!(f, "Surf Error: {}", e),
56            Error::UrlParseError(ref e) => write!(f, "Url Parse Error: {}", e),
57            Error::WebSocketError(ref e) => write!(f, "WebSocket Error: {:?}", e),
58        }
59    }
60}