use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error("embedding dimension mismatch: expected {expected}, got {actual}")]
EmbeddingDimMismatch {
expected: usize,
actual: usize,
},
#[error("batch must not be empty")]
BatchEmpty,
#[error("inference error: {0}")]
Inference(String),
#[error("tokenization error: {0}")]
Tokenization(String),
#[error("sqlite error: {0}")]
Sqlite(#[from] rusqlite::Error),
#[error("store lookup failed for key: {key}")]
StoreLookup {
key: String,
},
#[error("mutex lock poisoned: {what}")]
LockPoisoned {
what: &'static str,
},
}
pub type Result<T, E = Error> = std::result::Result<T, E>;
impl From<anyhow::Error> for Error {
fn from(e: anyhow::Error) -> Self {
Error::Inference(format!("{:#}", e))
}
}