use std::fmt::{Debug, Display, Formatter, Result};
pub enum PriceLevelError {
ParseError {
message: String,
},
InvalidFormat,
UnknownOrderType(String),
MissingField(String),
InvalidFieldValue {
field: String,
value: String,
},
InvalidOperation {
message: String,
},
SerializationError {
message: String,
},
DeserializationError {
message: String,
},
ChecksumMismatch {
expected: String,
actual: String,
},
}
impl Display for PriceLevelError {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
match self {
PriceLevelError::ParseError { message } => write!(f, "{message}"),
PriceLevelError::InvalidFormat => write!(f, "Invalid format"),
PriceLevelError::UnknownOrderType(order_type) => {
write!(f, "Unknown order type: {order_type}")
}
PriceLevelError::MissingField(field) => write!(f, "Missing field: {field}"),
PriceLevelError::InvalidFieldValue { field, value } => {
write!(f, "Invalid value for field {field}: {value}")
}
PriceLevelError::InvalidOperation { message } => {
write!(f, "Invalid operation: {message}")
}
PriceLevelError::SerializationError { message } => {
write!(f, "Serialization error: {message}")
}
PriceLevelError::DeserializationError { message } => {
write!(f, "Deserialization error: {message}")
}
PriceLevelError::ChecksumMismatch { expected, actual } => {
write!(f, "Checksum mismatch: expected {expected}, got {actual}")
}
}
}
}
impl Debug for PriceLevelError {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
match self {
PriceLevelError::ParseError { message } => write!(f, "{message}"),
PriceLevelError::InvalidFormat => write!(f, "Invalid format"),
PriceLevelError::UnknownOrderType(order_type) => {
write!(f, "Unknown order type: {order_type}")
}
PriceLevelError::MissingField(field) => write!(f, "Missing field: {field}"),
PriceLevelError::InvalidFieldValue { field, value } => {
write!(f, "Invalid value for field {field}: {value}")
}
PriceLevelError::InvalidOperation { message } => {
write!(f, "Invalid operation: {message}")
}
PriceLevelError::SerializationError { message } => {
write!(f, "Serialization error: {message}")
}
PriceLevelError::DeserializationError { message } => {
write!(f, "Deserialization error: {message}")
}
PriceLevelError::ChecksumMismatch { expected, actual } => {
write!(f, "Checksum mismatch: expected {expected}, got {actual}")
}
}
}
}
impl std::error::Error for PriceLevelError {}