p_rust 0.1.0

My rust practice
Documentation
fn area(width: u32, height: u32) -> u32 {
    width * height
}

fn area1(dimensions: (u32, u32)) -> u32 {
    dimensions.0 * dimensions.1
}

#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32
}

impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height
    }

    fn width(&self) -> bool {
        self.width > 0
    }

    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 area2(rectangle: &Rectangle) -> u32 {
    rectangle.width * rectangle.height
}

fn main() {
    {
        let width1 = 30;
        let height1 = 50;

        println!(
            "The area of the rectangle is {} square pixels.",
            area(width1, height1)
        );
    }

    {
        let rect1 = (30, 50);
        println!(
            "The area of the rectangle is {} square pixels.",
            area1(rect1)
        )
    }

    {
        let rect1 = Rectangle {
            width: 30,
            height: 50
        };
        println!(
            "The area of the rectangle is {} square pixels",
            area2(&rect1)
        );
        println!("rect1: {:#?}", rect1);
    }

    {
        let scale = 2;
        let rect1 = Rectangle {
            width: dbg!(30 * scale),
            height: 50
        };
        dbg!(&rect1);
    }

    {
        let rect1 = Rectangle {
            width: 30,
            height: 50
        };
        println!(
            "The area of the rectangle is {} square pixels.",
            rect1.area()
        );

        if rect1.width() {
            println!("The rectangle has a nonzero width; it is {}", rect1.width);
        }
    }

    {
        let rect1 = Rectangle {
            width: 30,
            height: 50
        };
        let rect2 = Rectangle {
            width: 10,
            height: 40
        };
        let rect3  = Rectangle {
            width: 60,
            height: 45
        };

        println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2));
        println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3));
    }

    {
        let s = Rectangle::square(3);
        println!("s: {:#?}", dbg!(&s));
    }
}