iris_lib/
utils.rs

1/// Return the mean value for a `Iterator<u8>`.
2///
3/// # Examples
4/// 
5/// ```
6/// use iris_lib::utils::mean;
7///
8/// let data: Vec<u8> = vec![33, 13, 255, 0, 42];
9/// let result = mean(data.into_iter());
10/// assert_eq!(68, result);
11/// ```
12/// 
13pub fn mean(iter: impl Iterator<Item = u8> + Clone) -> u8 {
14    (iter.clone().map(|x| x as u64).sum::<u64>() / iter.count() as u64) as u8
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn mean_ut() {
23        let data: Vec<u8> = vec![33, 13, 255, 0, 42];
24        let result = mean(data.into_iter());
25        assert_eq!(68, result);
26    }
27}