结构体和方法
use std::fmt;#[derive(Debug)]struct Rectangle { width: u32, height: u32,}impl std::fmt::Display for Rectangle { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Rectangle width: {} height: {}", self.width, self.height) }}impl Rectangle { fn area(&self) -> u32 { self.width * self.width } fn can_hold(&self, other: &Rectangle) -> bool { self.width > other.width && self.height > other.height } fn square(size: u32) -> Rectangle { Rectangle { width: size, height: size, } }}fn main() { let rect1 = Rectangle { width: 30, height: 50 }; let rect2 = Rectangle { width: 10, height: 40 }; let rect3 = Rectangle { width: 60, height: 45 }; let rect4 = Rectangle::square(40); println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2)); println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3)); println!("rect4 is {}", rect4); println!("rect4 is {:#?}", rect4); println!( "The area of the rectangle is {} square pixels.", rect4.area() );}