use std::fmt;
#[derive(Debug)]
pub enum DiscordError {
Http(ureq::Error),
Io(std::io::Error),
Json(serde_json::Error),
WebSocket(tungstenite::Error),
}
impl std::error::Error for DiscordError {}
impl fmt::Display for DiscordError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use DiscordError::*;
let message = match self {
Http(e) => format!("Http Error: {}", e),
Io(e) => format!("Io Error: {}", e),
Json(e) => format!("Json Error: {}", e),
WebSocket(e) => format!("WebSocket Error: {}", e),
};
write!(f, "{}", message)
}
}
impl From<ureq::Error> for DiscordError {
fn from(e: ureq::Error) -> Self {
DiscordError::Http(e)
}
}
impl From<std::io::Error> for DiscordError {
fn from(e: std::io::Error) -> Self {
DiscordError::Io(e)
}
}
impl From<serde_json::Error> for DiscordError {
fn from(e: serde_json::Error) -> Self {
DiscordError::Json(e)
}
}
impl From<tungstenite::Error> for DiscordError {
fn from(e: tungstenite::Error) -> Self {
DiscordError::WebSocket(e)
}
}