[rust]结构体方法

120 阅读1分钟

通过impl关键字来定义一个类型的实现块,通过这个块可以:

  1. 为类型定义方法,通过.访问
  2. 定义关联函数,通过::访问
  3. 为类型实现某个trait
#[derive(Debug)]
struct User {
    id: i64,
    user_name: String,
    age: i8,
    is_health: bool,
}

impl User {
    // 需要传入当前实例,具体的实例可访问
    fn get_name(&self) -> &str {
        &self.user_name[..] // 返回名字的引用
    }

    fn get_age(&self) -> i8 {
        self.age
    }

    // 属于结构体的方法,直接使用结构体访问
    fn talk() -> String {
        "我喜欢充满生命力的人".to_string()
    }
}


fn main() {
    let tom = User {
        id: 1,
        user_name: "Tom".to_string(),
        age: 18,
        is_health: true,
    };
    println!("{}", tom.get_name()); // 为类型定义方法
    println!("{}", tom.get_age());  // 为类型定义方法
    println!("{}", User::talk())    // 关联函数
}