#[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle { fn area(&self) -> u32 { self.width * self.height } 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() { let mut rect1 = Rectangle { 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)); }