Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. trait Avg {
  2. fn average(self) -> f64;
  3. }
  4.  
  5. impl<'a, I, T, E> Avg for I
  6. where
  7. I: IntoIterator<Item=&'a T, IntoIter=E>,
  8. T: Into<u64> + Copy + 'a,
  9. E: ExactSizeIterator<Item=&'a T>,
  10. {
  11. fn average(self) -> f64 {
  12. let mut sum: u64 = 0;
  13. let iter = self.into_iter();
  14. let count = iter.len();
  15. for num in iter {
  16. sum += Into::<u64>::into(*num);
  17. }
  18. sum as f64 / count as f64
  19. }
  20. }
  21.  
  22. fn main() {
  23. let v = vec![1u32, 2, 3];
  24. dbg!(v.average());
  25. dbg!([2u32, 3, 5, 8].average());
  26. dbg!(v);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement