1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#![allow(dead_code)] use std::env; pub(crate) fn env_usize(name: &str, default: usize) -> usize { env::var(name) .ok() .and_then(|value| value.parse::<usize>().ok()) .filter(|value| *value > 0) .unwrap_or(default) } pub(crate) fn mean(values: &[f64]) -> f64 { if values.is_empty() { return f64::NAN; } values.iter().copied().sum::<f64>() / values.len() as f64 } pub(crate) fn stddev(values: &[f64], mean: f64) -> f64 { if values.len() <= 1 { return 0.0; } let variance = values .iter() .map(|value| { let delta = *value - mean; delta * delta }) .sum::<f64>() / values.len() as f64; variance.sqrt() }