Rust中的结构体及方法语法

这个可以和类作比较,或是go当中的方法比较。

#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn area(&self) -> u32 {
	self.width * self.height
    }
    
    fn square(size: u32) -> Rectangle {
	Rectangle {width: size, height: size}
    }
}

impl Rectangle {
    fn can_hold(&self, other: &Rectangle) -> bool {
	self.width > other.width && self.height > other.height
    }
}

fn main() {
    let rect1 = Rectangle { width: 30, height: 50};
    let rect2 = Rectangle { width: 10, height: 40};
    let rect3 = Rectangle { width: 60, height: 45};

    println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2));
    println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3));
    println!("rect1 is {:#?}", rect1);
    println!(
	"The area of retangle is {} square pixels", rect1.area()
    );
    println!(
        "The area of retangle is {} square pixels", area(&rect1)
    );

    let sq = Rectangle::square(5);

    println!("square is {:#?}", sq);
    println!("The area of Square is {} square pixels", sq.area());
}

fn area(rectangle: &Rectangle) -> u32 {
    rectangle.width * rectangle.height
}

  

猜你喜欢

转载自www.cnblogs.com/aguncn/p/11403541.html