From 54e19d4d5f6a9282ff0b9d975b248dc3f2a339bf Mon Sep 17 00:00:00 2001 From: Thilo Behnke Date: Thu, 21 Apr 2022 20:16:44 +0200 Subject: [PATCH] better mutate vector instead of cloning and normalizing --- pong/src/geom.rs | 14 ++++++-------- pong/tests/vector_tests.rs | 12 ++++++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/pong/src/geom.rs b/pong/src/geom.rs index 5b29678..d624376 100644 --- a/pong/src/geom.rs +++ b/pong/src/geom.rs @@ -28,16 +28,14 @@ pub mod geom { self.y /= length; } - pub fn perpendicular_clockwise(&self) -> Vector { - let mut vector = Vector::new(self.y, -self.x); - vector.normalize(); - vector + pub fn perpendicular_clockwise(&mut self) { + self.x = self.y; + self.y = -self.x; } - pub fn perpendicular_counter_clockwise(&self) -> Vector { - let mut vector = Vector::new(-self.y, self.x); - vector.normalize(); - vector + pub fn perpendicular_counter_clockwise(&mut self) { + self.x = -self.y; + self.y = self.x; } pub fn add(&mut self, other: &Vector) { diff --git a/pong/tests/vector_tests.rs b/pong/tests/vector_tests.rs index fb8944a..c359166 100644 --- a/pong/tests/vector_tests.rs +++ b/pong/tests/vector_tests.rs @@ -47,11 +47,11 @@ pub fn should_calculate_angle_correctly( #[case(Vector::new(0., 1.), Vector::new(1., 0.))] #[case(Vector::new(7., 7.), Vector::new(0.7071067811865476, -0.7071067811865476))] pub fn should_get_perpendicular_clockwise( - #[case] vector: Vector, + #[case] mut vector: Vector, #[case] expected: Vector ) { - let res = vector.perpendicular_clockwise(); - assert_eq!(res, expected); + vector.perpendicular_clockwise(); + assert_eq!(vector, expected); } #[rstest] @@ -59,9 +59,9 @@ pub fn should_get_perpendicular_clockwise( #[case(Vector::new(1., 0.), Vector::new(0., 1.))] #[case(Vector::new(7., 7.), Vector::new(-0.7071067811865476, 0.7071067811865476))] pub fn should_get_perpendicular_counter_clockwise( - #[case] vector: Vector, + #[case] mut vector: Vector, #[case] expected: Vector ) { - let res = vector.perpendicular_counter_clockwise(); - assert_eq!(res, expected); + vector.perpendicular_counter_clockwise(); + assert_eq!(vector, expected); }