binance_rs_plus/
errors.rs

1use serde::Deserialize;
2use thiserror::Error;
3use std::fmt;
4
5#[derive(Debug, Deserialize, Clone)]
6pub struct BinanceContentError {
7    pub code: i16,
8    pub msg: String,
9}
10
11impl fmt::Display for BinanceContentError {
12    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13        write!(f, "code: {}, message: {}", self.code, self.msg)
14    }
15}
16
17impl std::error::Error for BinanceContentError {}
18
19#[derive(Error, Debug)]
20pub enum Error {
21    #[error("Binance API Error: {0}")]
22    BinanceError(#[from] BinanceContentError),
23
24    #[error("Invalid Kline Vec: {name} at index {index} is missing")]
25    KlineValueMissingError { index: usize, name: &'static str },
26
27    #[error("Reqwest Error: {0}")]
28    Reqwest(#[from] reqwest::Error),
29
30    #[error("Invalid Header Error: {0}")]
31    InvalidHeader(#[from] reqwest::header::InvalidHeaderValue),
32
33    #[error("IO Error: {0}")]
34    Io(#[from] std::io::Error),
35
36    #[error("Parse Float Error: {0}")]
37    ParseFloat(#[from] std::num::ParseFloatError),
38
39    #[error("URL Parse Error: {0}")]
40    UrlParser(#[from] url::ParseError),
41
42    #[error("JSON Error: {0}")]
43    Json(#[from] serde_json::Error),
44
45    #[error("WebSocket Error: {0}")]
46    WebSocket(#[from] tokio_tungstenite::tungstenite::Error),
47
48    #[error("System Time Error: {0}")]
49    Timestamp(#[from] std::time::SystemTimeError),
50
51    #[error("Custom Error: {0}")]
52    Custom(String),
53}
54
55pub type Result<T> = std::result::Result<T, Error>;