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