
























在 Rust 中,关联函数(Associated Functions)是指那些定义在 impl 块中、且属于某个特定类型的函数。
如果用面向对象的语言(如 Java、Python、C++)来类比,它非常类似于静态方法(Static Methods)。
通过以下四个核心要点,你可以快速掌握关联函数:
self 参数关联函数与普通方法的唯一区别,就是它的第一个参数不是 &self、&mut self 或 self。
cache.get()),因为它的第一个参数是 self。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,
}
}
}
::调用关联函数时,使用的是路径限定符(双冒号 ::),而不是点号 .。
fn main() {
// 使用【类型名::函数名】来调用关联函数 [1]
let player = User::new(String::from("Alice"));
// 错误示例:player.new(...) ── 这样写会报错,因为 new 不是方法
}
一个 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 权威指南》
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。