deribit_base/
error.rs

1//! Common error types for Deribit clients
2
3use std::fmt;
4
5/// Common error type for all Deribit clients
6#[derive(Debug, Clone)]
7pub enum DeribitError {
8    /// Connection error
9    Connection(String),
10    /// Authentication error
11    Authentication(String),
12    /// API error with code and message
13    Api { code: i32, message: String },
14    /// Serialization/deserialization error
15    Serialization(String),
16    /// Network timeout
17    Timeout,
18    /// Invalid configuration
19    InvalidConfig(String),
20    /// Generic error
21    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
40/// Result type alias for Deribit operations
41pub type DeribitResult<T> = Result<T, DeribitError>;