From cb7110c216c9de7fcca5ec8a80d67bdeb53d9c76 Mon Sep 17 00:00:00 2001 From: vlad Date: Fri, 10 Sep 2021 23:58:33 -0700 Subject: [PATCH 1/3] implement sum trait for point --- src/sdl2/rect.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/sdl2/rect.rs b/src/sdl2/rect.rs index 188baa3e..e1c1c1c9 100644 --- a/src/sdl2/rect.rs +++ b/src/sdl2/rect.rs @@ -891,6 +891,12 @@ impl DivAssign for Point { } } +impl std::iter::Sum for Point { + fn sum>(iter: I) -> Self { + iter.fold(Point::new(0, 0), Point::add) + } +} + #[cfg(test)] mod test { use super::{max_int_value, min_int_value, Point, Rect}; @@ -1096,4 +1102,10 @@ mod test { point /= 3; assert_eq!(point, Point::new(-11, 5) / 3); } + + #[test] + fn point_sum() { + let points_sum: Point = vec![Point::new(-11, 5), Point::new(6, 2)].iter().sum(); + assert_eq!(Point::new(-5, 7), points_sum); + } } From cbb891e5598b89af970f75dbd5d979c98a7e2211 Mon Sep 17 00:00:00 2001 From: vlad Date: Sat, 11 Sep 2021 00:29:28 -0700 Subject: [PATCH 2/3] fix point sum test to sum over iter of Point rather than &Point --- src/sdl2/rect.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sdl2/rect.rs b/src/sdl2/rect.rs index e1c1c1c9..37f89775 100644 --- a/src/sdl2/rect.rs +++ b/src/sdl2/rect.rs @@ -1105,7 +1105,8 @@ mod test { #[test] fn point_sum() { - let points_sum: Point = vec![Point::new(-11, 5), Point::new(6, 2)].iter().sum(); + let points_sum: Point = vec![Point::new(-11, 5), Point::new(6, 2)] + .into_iter().sum(); assert_eq!(Point::new(-5, 7), points_sum); } } From 9c9c8663a98473a016b2211466c3df554a633acd Mon Sep 17 00:00:00 2001 From: vlad Date: Sat, 11 Sep 2021 10:29:35 -0700 Subject: [PATCH 3/3] fix formatting --- src/sdl2/rect.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/sdl2/rect.rs b/src/sdl2/rect.rs index 37f89775..efe8e062 100644 --- a/src/sdl2/rect.rs +++ b/src/sdl2/rect.rs @@ -892,7 +892,7 @@ impl DivAssign for Point { } impl std::iter::Sum for Point { - fn sum>(iter: I) -> Self { + fn sum>(iter: I) -> Self { iter.fold(Point::new(0, 0), Point::add) } } @@ -1105,8 +1105,7 @@ mod test { #[test] fn point_sum() { - let points_sum: Point = vec![Point::new(-11, 5), Point::new(6, 2)] - .into_iter().sum(); + let points_sum: Point = vec![Point::new(-11, 5), Point::new(6, 2)].into_iter().sum(); assert_eq!(Point::new(-5, 7), points_sum); } }