1use std::fmt;
4
5#[derive(Debug, Clone)]
7pub enum DeribitError {
8 Connection(String),
10 Authentication(String),
12 Api { code: i32, message: String },
14 Serialization(String),
16 Timeout,
18 InvalidConfig(String),
20 Other(String),
22}
23
24impl fmt::Display for DeribitError {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 DeribitError::Connection(msg) => write!(f, "Connection error: {msg}"),
28 DeribitError::Authentication(msg) => write!(f, "Authentication error: {msg}"),
29 DeribitError::Api { code, message } => write!(f, "API error {code}: {message}"),
30 DeribitError::Serialization(msg) => write!(f, "Serialization error: {msg}"),
31 DeribitError::Timeout => write!(f, "Request timeout"),
32 DeribitError::InvalidConfig(msg) => write!(f, "Invalid configuration: {msg}"),
33 DeribitError::Other(msg) => write!(f, "Error: {msg}"),
34 }
35 }
36}
37
38impl std::error::Error for DeribitError {}
39
40pub type DeribitResult<T> = Result<T, DeribitError>;