use crate::error::EmbedderError;
pub trait Embedder: Send + Sync {
fn embed(&self, text: &str) -> Result<Vec<f32>, EmbedderError>;
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>, EmbedderError> {
texts.iter().map(|t| self.embed(t)).collect()
}
fn dimension(&self) -> usize;
}
impl Embedder for Box<dyn Embedder> {
fn embed(&self, text: &str) -> Result<Vec<f32>, EmbedderError> {
(**self).embed(text)
}
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>, EmbedderError> {
(**self).embed_batch(texts)
}
fn dimension(&self) -> usize {
(**self).dimension()
}
}