mod cosine;
mod dot;
mod euclidean;
mod hamming;
mod manhattan;
pub use cosine::Cosine;
pub use dot::DotProduct;
pub use euclidean::Euclidean;
pub use hamming::Hamming;
pub use manhattan::Manhattan;
use iqdb_types::Result;
pub(crate) fn batch_with(
query: &[f32],
candidates: &[&[f32]],
out: &mut [f32],
pair: fn(&[f32], &[f32]) -> Result<f32>,
) -> Result<()> {
crate::validate::batch(candidates, out)?;
for (slot, candidate) in out.iter_mut().zip(candidates.iter()) {
*slot = pair(query, candidate)?;
}
Ok(())
}