这个可以和类作比较,或是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 }
原文地址:https://www.cnblogs.com/aguncn/p/11403541.html
时间: 2024-11-08 11:57:09