rust关联函数

在 Rust 中,关联函数(Associated Functions)是指那些定义在 impl 块中、且属于某个特定类型的函数。
如果用面向对象的语言(如 Java、Python、C++)来类比,它非常类似于静态方法(Static Methods)。
通过以下四个核心要点,你可以快速掌握关联函数:

1. 核心特征:没有 self 参数

关联函数与普通方法的唯一区别,就是它的第一个参数不是 &self&mut selfself
  • 方法(Method):必须通过实例对象来调用(例如 cache.get()),因为它的第一个参数是 self
  • 关联函数(Associated Function):直接通过类型本身来调用,不需要创建实例对象。

2. 最常见的应用场景:构造函数

Rust 语言本身没有像 Java 那样的 constructor 关键字,也没有传统的类构造器。Rust 约定俗成地使用关联函数来充当构造函数,最常见的就是 new
struct User {
    username: String,
    score: u32,
}

impl User {
    // 这是一个【关联函数】,因为它没有 self 参数 [1]
    // 作用:充当构造函数,用来初始化并返回一个 User 实例
    pub fn new(name: String) -> Self {
        User {
            username: name,
            score: 0,
        }
    }
}

3. 调用语法:双冒号 ::

调用关联函数时,使用的是路径限定符(双冒号 ::),而不是点号 .
fn main() {
    // 使用【类型名::函数名】来调用关联函数 [1]
    let player = User::new(String::from("Alice")); 
    
    // 错误示例:player.new(...) ── 这样写会报错,因为 new 不是方法
}

4. 关联函数 vs 方法(同场对比)

一个 impl 块里可以同时存在关联函数和方法:
impl User {
    // 1. 关联函数(没有 self):用于创建实例 [1]
    pub fn create_admin() -> Self {
        User { username: String::from("Admin"), score: 100 }
    }

    // 2. 方法(有 self):用于操作已经创建好的实例
    pub fn upgrade_score(&mut self) {
        self.score += 10;
    }
}

fn main() {
    // 调用关联函数创建对象
    let mut admin = User::create_admin();
    
    // 调用方法修改对象数据
    admin.upgrade_score(); 
}

参考资料:

《Rust 权威指南》

posted @ 2026-07-23 14:43  PKICA  阅读(2)  评论(0)    收藏  举报