Commit fe29428f65014b29d95b593183faa52b98cb1baf

Authored by Georg Hopp
1 parent 390709b0

Add rectangles example

  1 +[package]
  2 +name = "rectangles"
  3 +version = "0.1.0"
  4 +authors = ["Georg Hopp <georg@steffers.org>"]
  5 +edition = "2018"
  6 +
  7 +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  8 +
  9 +[dependencies]
... ...
  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