libcorenn 0.3.1

Library for CoreNN
Documentation
use crate::metric::l2::dist_l2;
use crate::vec::VecData;
use cosine::dist_cosine;
use serde::Deserialize;
use serde::Serialize;
use strum_macros::Display;
use strum_macros::EnumString;

pub mod cosine;
pub mod l2;

pub type Metric = fn(&VecData, &VecData) -> f64;

#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash, Display, EnumString, Serialize, Deserialize)]
pub enum StdMetric {
  L2,
  Cosine,
}

impl StdMetric {
  pub fn get_fn(self) -> Metric {
    match self {
      StdMetric::L2 => dist_l2,
      StdMetric::Cosine => dist_cosine,
    }
  }
}