//! Error handling. use std::result; use thiserror::Error; use tungstenite::error::Error as WsError; pub type Result<T, E = Error> = result::Result<T, E>; #[derive(Error, Debug)] pub enum Error { #[error("Protocol parse error")] ProtoParseError, #[error("Connection error")] ConnError, #[error("Client write error")] ConnWriteError, #[error("Event parse failed")] EventParseFailed, #[error("Event validation failed")] EventInvalid, #[error("JSON parsing failed")] JsonParseFailed(serde_json::Error), #[error("WebSocket proto error")] WebsocketError(WsError), #[error("Command unknown")] CommandUnknownError, } impl From<serde_json::Error> for Error { fn from(r: serde_json::Error) -> Self { Error::JsonParseFailed(r) } } impl From<WsError> for Error { fn from(r: WsError) -> Self { Error::WebsocketError(r) } }