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}