Showing
2 changed files
with
99 additions
and
0 deletions
rectangles/Cargo.toml
0 → 100644
rectangles/src/main.rs
0 → 100644
1 | +// | ||
2 | +// Examples related to structs… | ||
3 | +// | ||
4 | +// Georg Hopp <georg@steffers.org> | ||
5 | +// | ||
6 | +// Copyright © 2019 Georg Hopp | ||
7 | +// | ||
8 | +// This program is free software: you can redistribute it and/or modify | ||
9 | +// it under the terms of the GNU General Public License as published by | ||
10 | +// the Free Software Foundation, either version 3 of the License, or | ||
11 | +// (at your option) any later version. | ||
12 | +// | ||
13 | +// This program is distributed in the hope that it will be useful, | ||
14 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | +// GNU General Public License for more details. | ||
17 | +// | ||
18 | +// You should have received a copy of the GNU General Public License | ||
19 | +// along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
20 | +// | ||
21 | + | ||
22 | +#[derive(Debug)] | ||
23 | +struct Rectangle { | ||
24 | + width: u32, | ||
25 | + height: u32, | ||
26 | +} | ||
27 | + | ||
28 | +impl Rectangle { | ||
29 | + fn area(&self) -> u32 { | ||
30 | + self.width * self.height | ||
31 | + } | ||
32 | + | ||
33 | + fn can_hold(&self, inner: &Rectangle) -> bool { | ||
34 | + self.width >= inner.width && self.height >= inner.height | ||
35 | + } | ||
36 | + | ||
37 | + fn square(size: u32) -> Rectangle { | ||
38 | + Rectangle { width: size, height: size } | ||
39 | + } | ||
40 | +} | ||
41 | + | ||
42 | +fn main() { | ||
43 | + let width1 = 30; | ||
44 | + let height1 = 50; | ||
45 | + | ||
46 | + println!( | ||
47 | + "The area of the rectangle ist {} square pixels.", | ||
48 | + area(width1, height1)); | ||
49 | + | ||
50 | + let rect1 = (30, 50); | ||
51 | + | ||
52 | + println!( | ||
53 | + "The area of the rectangle ist {} square pixels.", | ||
54 | + _area(rect1)); | ||
55 | + | ||
56 | + let rect1 = Rectangle { width: 30, height: 50 }; | ||
57 | + | ||
58 | + println!( | ||
59 | + "The area of the rectangle ist {} square pixels.", | ||
60 | + __area(&rect1)); | ||
61 | + | ||
62 | + println!("_rect1 is {:?}", rect1); | ||
63 | + | ||
64 | + println!( | ||
65 | + "The area of the rectangle ist {} square pixels.", | ||
66 | + rect1.area()); | ||
67 | + | ||
68 | + let rect2 = Rectangle { width: 10, height: 40}; | ||
69 | + let rect3 = Rectangle { width: 60, height: 45}; | ||
70 | + | ||
71 | + println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2)); | ||
72 | + println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3)); | ||
73 | + | ||
74 | + let square1 = Rectangle::square(32); | ||
75 | + | ||
76 | + println!("Got the square rectange: {:?}", square1); | ||
77 | +} | ||
78 | + | ||
79 | +fn area(width: u32, height: u32) -> u32 { | ||
80 | + width * height | ||
81 | +} | ||
82 | + | ||
83 | +fn _area(dimensions: (u32, u32)) -> u32 { | ||
84 | + let (width, height) = dimensions; | ||
85 | + width * height | ||
86 | +} | ||
87 | + | ||
88 | +fn __area(rectangle: &Rectangle) -> u32 { | ||
89 | + rectangle.width * rectangle.height | ||
90 | +} |
Please
register
or
login
to post a comment