1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(Serialize, Deserialize, Debug, Clone)]
5pub enum Error {
6 Unspecified(String),
7 ParseError(String),
8 SerializationError(String),
9 NetworkError(String),
10 ApiError(String, String, Option<String>, Option<String>, String),
11 Throttling,
12 ChecksumValidationError,
13 ConversionError(String),
14}
15
16impl std::error::Error for Error {}
17
18impl fmt::Display for Error {
19 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20 let text = match self {
21 Error::Unspecified(g) => g,
22 Error::ParseError(g) => g,
23 Error::SerializationError(g) => g,
24 Error::NetworkError(g) => g,
25 Error::ApiError(_, _, _, _, g) => g,
26 Error::Throttling => "throttling",
27 Error::ChecksumValidationError => "failed checksum validation",
28 Error::ConversionError(g) => g,
29 };
30 write!(f, "{}", text)
31 }
32}