main
 1/*
 2// Regular struct
 3struct User {
 4    active: bool,
 5    username: String,
 6    email: String,
 7    sign_in_count: u64,
 8}
 9
10// Tuple Struct
11struct Color(i32, i32, i32);
12struct Point(i32, i32, i32);
13
14// Unit-Like Structs
15struct AlwaysEqual;
16
17fn main() {
18    let user1 = build_user(String::from("root"), String::from("root@example.com"));
19    println!("{}", user1.username);
20
21    let user2 = User {
22        email: String::from("another@example.com"),
23        ..user1
24    };
25    println!("{}", user2.username);
26
27    let black = Color(0, 0, 0);
28    let origin = Point(0, 0, 0);
29    println!("{} {}", black.0, origin.1);
30
31    let subject = AlwaysEqual;
32}
33
34fn build_user(email: String, username: String) -> User {
35    User {
36        active: true,
37        username,
38        email,
39        sign_in_count: 1,
40    }
41}
42*/
43
44/*
45fn main() {
46    let width1 = 30;
47    let height1 = 50;
48
49    println!(
50        "The area of the rectangle is {} square pixels.",
51        area(width1, height1)
52    );
53}
54
55fn area(width: u32, height: u32) -> u32 {
56    width * height
57}
58*/
59
60/*
61fn main() {
62    let rect1 = (30, 50);
63
64    println!(
65        "The area of the rectangle is {} square pixels.",
66        area(rect1)
67    );
68}
69
70fn area(dimensions: (u32, u32)) -> u32 {
71    dimensions.0 * dimensions.1
72}
73*/
74
75#[derive(Debug)]
76struct Rectangle {
77    width: u32,
78    height: u32,
79}
80
81fn main() {
82    let scale = 2;
83    let rect1 = Rectangle {
84        width: dbg!(30 * scale),
85        height: 50,
86    };
87    println!("rect1 is {rect1:?}");
88    println!("rect1 is {rect1:#?}");
89    dbg!(&rect1);
90    println!(
91        "The area of the rectangle is {} square pixels.",
92        area(&rect1)
93    );
94}
95
96fn area(rectangle: &Rectangle) -> u32 {
97    rectangle.width * rectangle.height
98}