bullet_exchange_interface/
error.rs1use serde::Serialize;
2use thiserror::Error;
3
4#[derive(Debug, Error, Serialize)]
5#[serde(tag = "code", rename_all = "snake_case")]
6pub enum ConfigError {
7 #[error("Failed to parse input: {input} - {reason}")]
8 FailedToParseInput { input: String, reason: String },
9}
10
11#[derive(Debug, Error, Serialize)]
13#[serde(tag = "code", rename_all = "snake_case")]
14pub enum ArithmeticError {
15 #[error("Decimal arithmetic failed: {operation} with {left} and {right}")]
16 DecimalFailed {
17 operation: ArithmeticOperation,
18 left: rust_decimal::Decimal,
19 right: rust_decimal::Decimal,
20 },
21
22 #[error("Integer arithmetic failed: {operation} with {left} and {right}")]
23 IntegerFailed { operation: ArithmeticOperation, left: i128, right: i128 },
24}
25
26#[derive(Debug, Clone, PartialEq, Serialize)]
28#[serde(rename_all = "snake_case")]
29pub enum ArithmeticOperation {
30 Addition,
31 Subtraction,
32 Multiplication,
33 Division,
34 Exponentiation,
35}
36
37impl std::fmt::Display for ArithmeticOperation {
38 fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
39 match self {
40 Self::Addition => write!(fmt, "Addition"),
41 Self::Subtraction => write!(fmt, "Subtraction"),
42 Self::Multiplication => write!(fmt, "Multiplication"),
43 Self::Division => write!(fmt, "Division"),
44 Self::Exponentiation => write!(fmt, "Exponentiation"),
45 }
46 }
47}