use crate::{
distance::{euclidean::euclidean_distance, spherical::great_circle_distance},
traits::AsCoord,
};
#[derive(Debug, Clone, Copy, PartialEq, strum_macros::EnumString, strum_macros::Display)]
#[strum(serialize_all = "snake_case")]
pub enum DistanceType {
Euclidean,
Spherical,
}
impl DistanceType {
pub fn distance<C: AsCoord, D: AsCoord>(&self, p1: &C, p2: &D) -> f64 {
match self {
DistanceType::Euclidean => euclidean_distance(p1, p2),
DistanceType::Spherical => great_circle_distance(p1, p2),
}
}
}