diff --git a/rectangles/src/main.rs b/rectangles/src/main.rs index 55fd2e6..0e74b24 100644 --- a/rectangles/src/main.rs +++ b/rectangles/src/main.rs @@ -12,6 +12,17 @@ impl Rectangle { fn add_height(&mut self) { self.height += 1; } + + fn can_hold(&self, other: &Rectangle) -> bool { + self.width >= other.width && self.height >= other.height + } + + fn square(size: u32) -> Rectangle { + Rectangle { + width: size, + height: size, + } + } } fn main() { @@ -19,11 +30,26 @@ fn main() { width: 30, height: 50, }; + let rect2 = Rectangle { + width: 10, + height: 40, + }; + let rect3 = Rectangle { + width: 60, + height: 45, + }; + let square1 = Rectangle::square(20); println!( "The area of the rectangle is {} square pixels.", rect1.area() ); + println!( + "The area of the square is {} square pixels.", + square1.area() + ); rect1.add_height(); println!("{:#?}", rect1); + println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2)); + println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3)); } \ No newline at end of file