惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
Webroot Blog
Webroot Blog
S
Secure Thoughts
N
News and Events Feed by Topic
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
N
News | PayPal Newsroom
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Privacy & Cybersecurity Law Blog
GbyAI
GbyAI
K
Kaspersky official blog
WordPress大学
WordPress大学
P
Proofpoint News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
W
WeLiveSecurity
Jina AI
Jina AI
The Cloudflare Blog
Project Zero
Project Zero
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
L
LangChain Blog
Forbes - Security
Forbes - Security
PCI Perspectives
PCI Perspectives
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
博客园 - 【当耐特】
H
Heimdal Security Blog
A
About on SuperTechFans
Cisco Talos Blog
Cisco Talos Blog
T
Threat Research - Cisco Blogs
云风的 BLOG
云风的 BLOG
Spread Privacy
Spread Privacy
L
LINUX DO - 最新话题
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
Intezer
Martin Fowler
Martin Fowler
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint

博客园 - PKICA

博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 rust线程-std::thread::park和unpark 配合Builder实现轻量级的线程挂起与唤醒 rust自定义线程属性std::thread::Builder rust线程 rust高并发设计实践进阶 rust高并发设计实践 rust性能优化与安全边界 联合体union在rust和C语言中有什么区别 rust并发与异步编程 如何预防rust不良的代码设计总结 rust类型系统与零成本抽象 rust内存模型 告别大显存依赖!用 Rust 新一代深度学习框架 Burn 打造纯 CPU 文本分类推理引擎 rust类型系统标记 编译配置解答 git实用命令 rust底层设计理念值得注意的几个地方总结 rust可变引用作为函数参数的机理详解 Rust内存重解释transmute C与Rust类型映射 Rust FFI 安全抽象范式 rust延迟初始化原语 rust重借用机制与原理 rust参数传递模型 汇编语言语法详解 gdb汇编调试 gdb-pwndbg的安装与使用指南 gdb调试插件gef C语言thread_local linux系统readelf命令使用指南 gcore转储进程内存 gdb查看命令 RGB与YUV颜色编码的区别 Rust原子类型 C++ STL求两个集合交集差集 gdb调试集锦 ubuntu24.0.4使用root用户登录 ubuntu24.0.4输入密码后跳回登录界面 AI内存压缩技术TurboQuant及存疑 ubuntu切换到指定内核版本 在没有顶级科技大佬直接背书的情况下deepseek为啥能够异军突起? HuggingFace和deepseek的关系 当前主流AI大模型 Rust写时克隆Cow系列2
rust关联函数
PKICA · 2026-07-23 · via 博客园 - PKICA

在 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 权威指南》