Trait vpsearch::MetricSpace [] [src]

pub trait MetricSpace {
    type UserData;
    type Distance: Copy + PartialOrd + Bounded + Add<Output=Self::Distance> + Sub<Output=Self::Distance>;
    fn distance(&self, other: &Self, user_data: &Self::UserData) -> Self::Distance;
}

Associated Types

type UserData

type Distance: Copy + PartialOrd + Bounded + Add<Output=Self::Distance> + Sub<Output=Self::Distance>

Required Methods

fn distance(&self, other: &Self, user_data: &Self::UserData) -> Self::Distance

This function must return distance between two items that meets triangle inequality. Specifically, it can't return squared distance (you must use sqrt if you use Euclidean distance)

@param user_data Whatever you want. Passed from new_with_user_data()

Implementors