use thiserror::Error;
#[derive(Debug, Clone, PartialEq, Error)]
pub enum RetrieveError {
#[error("query is empty")]
EmptyQuery,
#[error("index is empty")]
EmptyIndex,
#[error("invalid parameter: {0}")]
InvalidParameter(String),
#[error("dimension mismatch: query has {query_dim} dimensions, document has {doc_dim}")]
DimensionMismatch { query_dim: usize, doc_dim: usize },
#[error("invalid sparse vector: {0}")]
InvalidSparseVector(String),
#[error("I/O error: {0}")]
Io(String),
#[error("index out of bounds: {0}")]
OutOfBounds(usize),
#[error("format error: {0}")]
FormatError(String),
#[error("serialization error: {0}")]
Serialization(String),
#[error("{0}")]
Other(String),
}
impl From<std::io::Error> for RetrieveError {
fn from(err: std::io::Error) -> Self {
RetrieveError::Io(err.to_string())
}
}
pub type Result<T> = std::result::Result<T, RetrieveError>;