rustbook

Toy programs and snippets for The Rust Programming Language book
Log | Files | Refs

main.rs (1074B)


      1 #[derive(Debug)]
      2 struct Rect {
      3     h: u16,
      4     w: u16,
      5 }
      6 
      7 impl Rect {
      8     fn area(&self) -> u16 {
      9         self.w * self.h
     10     }
     11 
     12     fn fit(&self, fit: &Rect) -> bool {
     13         self.w > fit.w && self.h > fit.h
     14     }
     15 
     16     fn square(size: u16) -> Rect {
     17         Rect {
     18             h: size,
     19             w: size,
     20         }
     21     }
     22 }
     23 
     24 struct Rectuple (u16, u16);
     25 
     26 fn rectuple_area(rect: Rectuple) -> u16 {
     27     rect.0 * rect.1
     28 }
     29 
     30 fn calc_area(rect: &Rect) -> u16 {
     31     rect.h * rect.w
     32 }
     33 
     34 fn main() {
     35     let rect1 = Rect {
     36         h: 10,
     37         w: 20,
     38     };
     39 
     40     let result = calc_area(&rect1);
     41     println!("area1={}", result);
     42 
     43     let rect3 = Rectuple(15, 20);
     44     println!("area2={}", rectuple_area(rect3));
     45 
     46     println!("rect1={:#?}", rect1);
     47     println!("area from private method={}", rect1.area());
     48     
     49     let rect2 = Rect {
     50         h: 12,
     51         w: 22,
     52     };
     53 
     54     let square = Rect::square(10);
     55     println!("square={:#?}", square);
     56 
     57     println!("Does rect1 fit in rect2? {}!", rect2.fit(&rect1));
     58     println!("Does rect2 fit in rect1? {}!", rect1.fit(&rect2));
     59 }