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 {
24 operation: ArithmeticOperation,
25 left: i128,
26 right: i128,
27 },
28}
29
30#[derive(Debug, Clone, PartialEq, Serialize)]
32#[serde(rename_all = "snake_case")]
33pub enum ArithmeticOperation {
34 Addition,
35 Subtraction,
36 Multiplication,
37 Division,
38 Exponentiation,
39}
40
41impl std::fmt::Display for ArithmeticOperation {
42 fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
43 match self {
44 Self::Addition => write!(fmt, "Addition"),
45 Self::Subtraction => write!(fmt, "Subtraction"),
46 Self::Multiplication => write!(fmt, "Multiplication"),
47 Self::Division => write!(fmt, "Division"),
48 Self::Exponentiation => write!(fmt, "Exponentiation"),
49 }
50 }
51}