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 }