use std::fmt;
#[derive(Clone, Debug, PartialEq)]
pub enum ArrowSpaceError {
DegenerateLambda {
raw: f64,
},
NonFiniteQuery,
DimensionMismatch {
expected: usize,
got: usize,
},
EmptyItems,
}
impl fmt::Display for ArrowSpaceError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::DegenerateLambda { raw } => write!(
f,
"degenerate lambda (raw={raw:.6}): lambda is ~0.0, \
check the eps parameter for the builder — every dataset has an \
optimal eps. The query item may also be out of context for the \
dataset (undecidable)."
),
Self::NonFiniteQuery => write!(
f,
"query item contains non-finite values (NaN or Infinity)"
),
Self::DimensionMismatch { expected, got } => write!(
f,
"dimension mismatch: expected {expected} features, got {got}"
),
Self::EmptyItems => write!(f, "items cannot be empty"),
}
}
}
impl std::error::Error for ArrowSpaceError {}