evobench_tools/stats_tables/stats/
average.rs

1//! Average trait (can't find in std lib?)
2
3pub trait Average {
4    type Result;
5    /// Rounding up for integer results where the result is in the
6    /// middle between values.
7    fn average(self) -> Self::Result;
8}
9
10impl Average for (u64, u64) {
11    type Result = u64;
12    fn average(self) -> Self::Result {
13        let (a, b) = self;
14        let sum = a as u128 + b as u128;
15        ((sum + 1) / 2) as u64
16    }
17}
18
19#[test]
20fn t_average() {
21    assert_eq!((20, 10).average(), 15);
22    assert_eq!((10, 11).average(), 11);
23}