在 Rust 中,方法是与结构体、枚举或 trait 相关联的函数。方法允许你为特定的类型实现功能,使得代码更具结构和可读性。Rust 的方法语法与其他语言中的方法或成员函数的概念相似。

1. 方法与函数的区别:

在 Rust 中,方法与函数的区别在于方法是与某个类型关联的函数,并使用 self 参数。函数则是独立的、没有关联到特定类型的功能。

2. 在结构体上定义方法:
// 定义一个名为 `Person` 的结构体
struct Person {
    name: String,
    age: u32,
}

impl Person {
    // 定义一个关联到 Person 结构体的方法
    fn new(name: &str, age: u32) -> Person {
        Person {
            name: String::from(name),
            age,
        }
    }

    // 另一个方法,用于打印 Person 的信息
    fn print_info(&self) {
        println!("Name: {}, Age: {}", self.name, self.age);
    }
}

fn main() {
    // 使用 Person::new 方法创建结构体实例
    let person = Person::new("Alice", 25);

    // 调用关联到结构体的方法
    person.print_info();
}

在上述例子中,我们在 Person 结构体上定义了两个方法:new 和 print_info。new 方法是一个关联到 Person 结构体的关联函数,用于创建结构体的新实例。print_info 方法则是关联到实例的方法,用于打印结构体的信息。

3. 在枚举上定义方法:
// 定义一个名为 `TrafficLight` 的枚举
enum TrafficLight {
    Red,
    Yellow,
    Green,
}

impl TrafficLight {
    // 定义一个关联到 TrafficLight 枚举的方法
    fn next(&self) -> TrafficLight {
        match self {
            TrafficLight::Red => TrafficLight::Green,
            TrafficLight::Yellow => TrafficLight::Red,
            TrafficLight::Green => TrafficLight::Yellow,
        }
    }
}

fn main() {
    let current_light = TrafficLight::Red;

    // 调用关联到枚举的方法
    let next_light = current_light.next();
    println!("Next traffic light: {:?}", next_light);
}

在这个例子中,我们在 TrafficLight 枚举上定义了一个方法 next,用于返回下一个交通灯的状态。

方法语法使得与特定类型关联的行为更加自然和组织化,同时也提高了代码的可读性和可维护性。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6798/Rust