use std::fmt;
#[derive(Debug)]
pub enum VectorError {
CollectionNotFound(String),
DimensionMismatch { expected: usize, actual: usize },
Unsupported(String),
Query(String),
Connection(String),
InvalidConfig(String),
InvalidIdentifier(String),
TopKExceeded { requested: usize, max: usize },
}
impl fmt::Display for VectorError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
VectorError::CollectionNotFound(name) => {
write!(f, "collection not found: {}", name)
}
VectorError::DimensionMismatch { expected, actual } => {
write!(
f,
"dimension mismatch: expected {}, got {}",
expected, actual
)
}
VectorError::Unsupported(msg) => {
write!(f, "unsupported operation: {}", msg)
}
VectorError::Query(msg) => write!(f, "query error: {}", msg),
VectorError::Connection(msg) => write!(f, "connection error: {}", msg),
VectorError::InvalidConfig(msg) => write!(f, "invalid config: {}", msg),
VectorError::InvalidIdentifier(msg) => write!(f, "invalid identifier: {}", msg),
VectorError::TopKExceeded { requested, max } => {
write!(f, "top_k {} exceeds maximum allowed {}", requested, max)
}
}
}
}
impl std::error::Error for VectorError {}