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}