use std::fmt;
pub type Result<T> = std::result::Result<T, ReqError>;
#[derive(Debug, Clone, PartialEq)]
pub enum ReqError {
EmptySketch,
InvalidK(u16),
InvalidRank(f64),
NanItem,
IncompatibleSketches(String),
InvalidSplitPoints(String),
}
impl fmt::Display for ReqError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ReqError::EmptySketch => write!(f, "Cannot perform operation on empty sketch"),
ReqError::InvalidK(k) => write!(
f,
"Invalid k parameter: {}. Must be even and in the range [4, 1024]",
k
),
ReqError::InvalidRank(rank) => {
write!(f, "Invalid rank: {}. Must be in range [0.0, 1.0]", rank)
}
ReqError::NanItem => write!(f, "Query item is NaN"),
ReqError::IncompatibleSketches(msg) => write!(f, "Incompatible sketches: {}", msg),
ReqError::InvalidSplitPoints(msg) => write!(f, "Invalid split points: {}", msg),
}
}
}
impl std::error::Error for ReqError {}