From 335b1704fc0074cba05274fcf29a9bb426a118ad Mon Sep 17 00:00:00 2001 From: gabe Date: Thu, 23 Jun 2022 15:06:29 -0500 Subject: [PATCH] covered ownership and structs. --- the_book/rectangles/Cargo.toml | 8 +++++++ the_book/rectangles/src/main.rs | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 the_book/rectangles/Cargo.toml create mode 100644 the_book/rectangles/src/main.rs diff --git a/the_book/rectangles/Cargo.toml b/the_book/rectangles/Cargo.toml new file mode 100644 index 0000000..703c9d9 --- /dev/null +++ b/the_book/rectangles/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "rectangles" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/the_book/rectangles/src/main.rs b/the_book/rectangles/src/main.rs new file mode 100644 index 0000000..30068de --- /dev/null +++ b/the_book/rectangles/src/main.rs @@ -0,0 +1,41 @@ +#[derive(Debug)] +struct Rectangle { + width: u32, + height: u32, +} + +impl Rectangle { + fn area(&self) -> u32 { + self.width * self.height + } + 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 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)); + + println!( + "The area of the rectangle is {} square pixels.", + rect1.area() + ); + + println!("rect1 is {:?}", &rect1); +}