faasle 0.1.1

A Rust crate for evaluating distances (metrics)
Documentation
macro_rules! impl_metric {
    ($($metric:ident,)*) => {
        $(
            #[derive(Debug, Clone, Copy)]
            pub struct $metric;

            impl $metric {
                pub fn new() -> Self {
                    Self {}
                }
            }

            impl Default for $metric {
                fn default() -> Self {
                    Self::new()
                }
            }
        )*
    };
}

pub mod pre_metric {
    impl_metric! {
        GenKLDivergence,
        KLDivergence,
        NormRMSDeviation,
    }
}
pub mod semi_metric {
    impl_metric! {
        BhattacharyyaDist,
        BrayCurtis,
        ChiSqDist,
        JSDivergence,
        MeanAbsDeviation,
        MeanSqDeviation,
        SpanNormDist,
        SqEuclidean,
    }
}
pub mod metric {
    impl_metric! {
        Chebyshev,
        Cityblock,
        CosineDist,
        Euclidean,
        Hamming,
        Jaccard,
        RMSDeviation,
        TotalVariation,
    }
    #[derive(Debug, Clone, Copy)]
    pub struct Minkowski {
        pub p: f64,
    }

    impl Minkowski {
        pub fn new(p: f64) -> Self {
            Self { p }
        }
    }

    impl Default for Minkowski {
        fn default() -> Self {
            Self::new(1.0)
        }
    }
}