use crate::global::Float;
pub trait AverageUsize<U: Into<usize>>: IntoIterator<Item = U> + Sized {
fn average_usize(self) -> Float {
let mut sum: usize = 0;
let mut count: usize = 0;
for n in self {
sum += n.into();
count += 1;
}
sum as Float / count as Float
}
}
impl<U: Into<usize>, T> AverageUsize<U> for T where T: IntoIterator<Item = U> {}
pub trait AverageFloat<U: Into<Float>>: IntoIterator<Item = U> + Sized {
fn average_float(self) -> Float {
let mut sum: Float = 0.0;
let mut count: usize = 0;
for n in self {
sum += n.into();
count += 1;
}
sum as Float / count as Float
}
}
impl<U: Into<Float>, T> AverageFloat<U> for T where T: IntoIterator<Item = U> {}