fast-stats 0.1.1

Rust library for efficient calculation of statistics from streaming data
Documentation
pub fn mean(data: &[f64]) -> Option<f64> {
    let sum: f64 = data.iter().sum();
    let count = data.len() as f64;
    match count {
        count if count > 0.0 => Some(sum/count),
        _ => None
    }
}

pub fn stddev(data: &[f64]) -> Option<f64> {
    match (mean(data), data.len()) {
        (Some(data_mean), count) if count > 0 => {
            let variance = data.iter().map(|value| {
                let diff = data_mean - *value;
                diff * diff
            }).sum::<f64>() / count as f64;

            Some(variance.sqrt())
        },
        _ => None
    }
}

pub fn min(data: &[f64]) -> Option<f64> {
    if !data.is_empty() {
        Some(data.iter().copied().fold(f64::INFINITY, f64::min)) 
    } else {
        None
    }
}

pub fn max(data: &[f64]) -> Option<f64> {
    if !data.is_empty() {
        Some(data.iter().copied().fold(f64::NEG_INFINITY, f64::max))
    } else {
        None
    }
}