Rust 学习之自定义派生宏-访问和操作TokenStream(二)

Rust 学习之自定义派生宏-访问和操作TokenStream(二)

要深入理解 TokenStream 及派生宏中的代码生成逻辑,我们可以从 “数据格式”“解析后结构”“多代码块生成” 三个维度展开,结合实例说明细节。 一、TokenStream:代码的 “序列化格式” TokenStream 是 Ru

Rust 学习之自定义派生宏-访问和操作TokenStream(一)

Rust 学习之自定义派生宏-访问和操作TokenStream(一)

在自定义派生宏中访问和操作 TokenStream 的核心思路是:先解析为结构化的语法树(用 syn 库),再基于语法树信息生成新的代码(用 quote 库),最后转换回 TokenStream。直接操作原始 TokenStream(如单

Rust 学习之自定义派生宏

Rust 学习之自定义派生宏

我们可以把 “自定义派生宏” 理解成 “自己动手造一台专属的代码自动生成机”—— 内置派生宏(如 Debug、Clone)是工厂现成的 “通用打印机”,只能打标准格式的代码;而自定义派生宏是你为特定需求造的 “定制打印机”,比如专门给结构体生成 “转 JSON 代码”“数据库映射代码” 的机器。 下

Rust 学习之宏(Macro)-概括讲解

Rust 学习之宏(Macro)-概括讲解

Rust 中的宏(Macro)可以理解为 “代码生成器”,它能在编译阶段根据输入 “模板” 自动生成代码,比函数更灵活 —— 能处理不同数量、类型的参数,甚至生成复杂的逻辑结构。如果说函数是 “固定的工具”,宏就是 “能根据需求自动组装工具的工厂”。 一、宏的核心特点:为什么需要宏?

Rust 学习之枚举(enum)和模式匹配-进阶

Rust 学习之枚举(enum)和模式匹配-进阶

我们来更深入地拆解 Rust 的枚举(enum)和模式匹配(match),包括它们的底层逻辑、进阶特性和设计哲学。这部分是 Rust 最具特色的功能之一,理解透彻能大幅提升代码的表达力和安全性。 一、枚举(enum

Rust 学习之枚举(enum)和模式匹配

Rust 学习之枚举(enum)和模式匹配

Rust 的枚举(enum)和模式匹配(match/if let)是一对 “黄金搭档”,用来处理 “一个值可能有多种状态” 的场景。它们的设计非常直观,甚至能对应到日常生活中的很多场景。我们用生活化的例子来理解:

Rust 学习之闭包

Rust 中的闭包(Closure)是一种可以捕获周围环境变量的匿名函数,它的核心特点是:简洁、灵活,能 “记住” 定义时的上下文变量。如果用生活场景比喻,闭包就像 “临时雇佣的助手”—— 不需要提前正式 “注册”(定义函数名),能快速接手一些短期任务,还能顺手用用身边的工具(捕获环境变量)。

Rust 学习之生命周期-多生命周期参数

在 Rust 中使用多个生命周期参数时,避免报错的核心原则是:明确每个生命周期参数的 “存活范围关系”,让编译器能够验证 “所有引用的存活时间都在有效范围内”。具体来说,需要通过以下方式管理多个生命周期参数的约束关系:

Rust 学习之生命周期

Rust 学习之生命周期

Rust 的生命周期(Lifetime)本质是 “引用的存活时间约束”,目的是确保所有引用始终指向有效的数据(避免悬垂引用)。如果用日常生活的场景比喻,最贴切的是“借用关系的有效期管理”—— 就像借书、租物时,“借用物的使用期限” 不能超过 “原主人持有该物品的期限”。

Rust 基础学习

在 Rust 中,struct(结构体)和 trait(特征)是两个核心概念,分别用于数据封装和行为抽象,是构建 Rust 程序的基础。