Trait vpsearch::BestCandidate
[−]
[src]
pub trait BestCandidate<Item: MetricSpace + Copy> where Self: Sized { type Output; fn consider(&mut self,
item: &Item,
distance: Item::Distance,
candidate_index: usize,
user_data: &Item::UserData); fn distance(&self) -> Item::Distance; fn result(self, user_data: &Item::UserData) -> Self::Output; }
You can implement this if you want to peek at all visited elements
impl<Item: MetricSpace + Copy> BestCandidate<Item> for ReturnByIndex<Item> { type Output = (usize, Item::Distance); fn consider(&mut self, _: &Item, distance: Item::Distance, candidate_index: usize, _: &Item::UserData) { if distance < self.distance { self.distance = distance; self.idx = candidate_index; } } fn distance(&self) -> Item::Distance { self.distance } fn result(self, _: &Item::UserData) -> (usize, Item::Distance) { (self.idx, self.distance) } }
Associated Types
type Output
find_nearest() will return this type
Required Methods
fn consider(&mut self,
item: &Item,
distance: Item::Distance,
candidate_index: usize,
user_data: &Item::UserData)
item: &Item,
distance: Item::Distance,
candidate_index: usize,
user_data: &Item::UserData)
This is a visitor method. If the given distance is smaller than previously seen, keep the item (or its index).
UserData is the same as for MetricSpace<Item>, and it's () by default.
fn distance(&self) -> Item::Distance
Minimum distance seen so far
fn result(self, user_data: &Item::UserData) -> Self::Output
Called once after all relevant nodes in the tree were visited