From bc1ba4f88e040173ab18d988176f5bc72def8c9b Mon Sep 17 00:00:00 2001 From: expectocode Date: Tue, 31 Dec 2019 00:08:58 +0000 Subject: [PATCH] Make point immutable --- src/geometry.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/geometry.rs b/src/geometry.rs index dcb193e..d1e7c5a 100644 --- a/src/geometry.rs +++ b/src/geometry.rs @@ -23,14 +23,12 @@ impl Point { Self { x: 0, y: 0 } } - pub fn with_x(&mut self, x: u32) -> &mut Self { - self.x = x; - self + pub fn with_x(&self, x: u32) -> Self { + Self { x, y: self.y } } - pub fn with_y(&mut self, y: u32) -> &mut Self { - self.y = y; - self + pub fn with_y(&self, y: u32) -> Self { + Self { x: self.x, y } } pub fn x(&self) -> u32 { @@ -93,12 +91,12 @@ mod tests { #[test] fn test_point_set_x() { - assert_eq!(Point::new(42, 52).with_x(12), &Point::new(12, 52)); + assert_eq!(Point::new(42, 52).with_x(12), Point::new(12, 52)); } #[test] fn test_point_set_y() { - assert_eq!(Point::new(42, 52).with_y(12), &Point::new(42, 12)); + assert_eq!(Point::new(42, 52).with_y(12), Point::new(42, 12)); } #[test]