Trait hnsw_rs::prelude::Distance

source ·
pub trait Distance<T>
where T: Send + Sync,
{ // Required method fn eval(&self, va: &[T], vb: &[T]) -> f32; }
Expand description

This is the basic Trait describing a distance. The structure Hnsw can be instantiated by anything satisfying this Trait. The crate provides implmentations for L1, L2 , Cosine, Jaccard, Hamming. For other distances implement the trait possibly with the newtype pattern

Required Methods§

source

fn eval(&self, va: &[T], vb: &[T]) -> f32

Implementors§

source§

impl Distance<f32> for DistCosine

source§

impl Distance<f32> for DistDot

source§

impl Distance<f32> for DistHamming

This implementation is dedicated to SuperMinHash algorithm in crate probminhash.
Could be made generic with unstable source as there is implementation of PartialEq for f32

source§

impl Distance<f32> for DistHellinger

source§

impl Distance<f32> for DistJeffreys

source§

impl Distance<f32> for DistJensenShannon

source§

impl Distance<f32> for DistL1

source§

impl Distance<f32> for DistL2

source§

impl Distance<f64> for DistCosine

source§

impl Distance<f64> for DistHamming

This implementation is dedicated to SuperMinHash algorithm in crate probminhash.
Could be made generic with unstable source as there is implementation of PartialEq for f64

source§

impl Distance<f64> for DistHellinger

source§

impl Distance<f64> for DistJeffreys

source§

impl Distance<f64> for DistJensenShannon

source§

impl Distance<f64> for DistL1

source§

impl Distance<f64> for DistL2

source§

impl Distance<i16> for DistHamming

source§

impl Distance<i32> for DistCosine

source§

impl Distance<i32> for DistHamming

source§

impl Distance<i32> for DistL1

source§

impl Distance<i32> for DistL2

source§

impl Distance<i64> for DistCosine

source§

impl Distance<i64> for DistL1

source§

impl Distance<i64> for DistL2

source§

impl Distance<u8> for DistHamming

source§

impl Distance<u8> for DistJaccard

source§

impl Distance<u8> for DistL1

source§

impl Distance<u8> for DistL2

source§

impl Distance<u16> for DistCosine

source§

impl Distance<u16> for DistHamming

source§

impl Distance<u16> for DistJaccard

source§

impl Distance<u16> for DistL1

source§

impl Distance<u16> for DistL2

source§

impl Distance<u16> for DistLevenshtein

source§

impl Distance<u32> for DistHamming

source§

impl Distance<u32> for DistJaccard

source§

impl Distance<u32> for DistL1

source§

impl Distance<u32> for DistL2

source§

impl Distance<u64> for DistHamming

source§

impl<T> Distance<T> for DistCFFI<T>
where T: Copy + Clone + Send + Sync,

source§

impl<T> Distance<T> for DistFn<T>
where T: Copy + Clone + Send + Sync,

source§

impl<T> Distance<T> for NoDist
where T: Send + Sync,

source§

impl<T, F> Distance<T> for DistPtr<T, F>
where T: Copy + Clone + Send + Sync, F: Float,

beware that if F is f64, the distance converted to f32 can overflow!