nn_rs/metrics/
metric_factory.rs1use anyhow::Result;
2
3use crate::metrics;
4use crate::types::MetricFunction;
5
6pub fn metric_factory(metric: &str) -> Result<MetricFunction> {
15 match metric {
16 "cosine" => Ok(metrics::cosine_distance),
17 "manhattan" => Ok(metrics::manhattan_distance),
18 "euclidean" => Ok(metrics::euclidean_distance),
19 _ => panic!("Did not recognise metric {}", metric),
20 }
21}
22
23
24#[cfg(test)]
25mod tests {
26
27 use super::*;
28 use anyhow::Result;
29 use crate::types::MetricFunction;
30
31 #[test]
32 #[ignore]
33 fn test_metric_factory() -> Result<()> {
34 let metrics = vec!["euclidean", "cosine", "manhattan"];
38 for metric in metrics{
39 let _metric_fn: MetricFunction = metric_factory(metric)?;
40 }
41 Ok(())
42 }
43}