use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SketchError {
InvalidParameter {
param: String,
value: String,
constraint: String,
},
SerializationError(String),
DeserializationError(String),
IncompatibleSketches {
reason: String,
},
ReconciliationError {
reason: String,
},
}
impl fmt::Display for SketchError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SketchError::InvalidParameter {
param,
value,
constraint,
} => {
write!(
f,
"Invalid parameter '{}': value '{}' {}",
param, value, constraint
)
}
SketchError::SerializationError(msg) => write!(f, "Serialization error: {}", msg),
SketchError::DeserializationError(msg) => write!(f, "Deserialization error: {}", msg),
SketchError::IncompatibleSketches { reason } => {
write!(f, "Incompatible sketches: {}", reason)
}
SketchError::ReconciliationError { reason } => {
write!(f, "Reconciliation error: {}", reason)
}
}
}
}
impl std::error::Error for SketchError {}
pub type Result<T> = std::result::Result<T, SketchError>;