Skip to main content

e_imzo/
error.rs

1use native_tls::TlsStream;
2use std::io;
3use std::net::TcpStream;
4use thiserror::Error;
5use tungstenite::ClientHandshake;
6
7/// Result type for this crate's use.
8///
9/// Instead of using Rust's defaulted Result type, we abstracted
10/// Result type to accept a single type parameter by defaulting
11/// our error type
12pub type Result<T, E = EIMZOError> = std::result::Result<T, E>;
13
14/// E-IMZO crate's error type collection.
15#[derive(Error, Debug)]
16pub enum EIMZOError {
17    #[error("A websocket server went down: {0}")]
18    Io(#[from] io::Error),
19    #[error("JsonParse error: {0}")]
20    JsonParse(#[from] serde_json::Error),
21    #[error("UrlParseError  error: {0}")]
22    UrlParseError(#[from] url::ParseError),
23    // native_tls
24    #[error("TlsError  error: {0}")]
25    TlsError(#[from] native_tls::Error),
26    #[error("TlsHandshakeError  error: {0}")]
27    TlsHandshakeError(#[from] native_tls::HandshakeError<TcpStream>),
28    #[error("HandshakeError error: {0}")]
29    HandshakeError(#[from] tungstenite::HandshakeError<ClientHandshake<TlsStream<TcpStream>>>),
30
31    /// To be used only if you get despaired.
32    #[error("Something aggressive is going on")]
33    Unknown,
34}