附录 A: Rust 术语表

Rust 的设计围绕内存安全与并发安全展开,其核心概念形成了一套独特的术语体系。本附录对常见术语进行简明解释,帮助读者快速理解文档、社区讨论和编译器提示。

所有权(Ownership)

所有权是 Rust 内存管理的核心机制。每个值在任意时刻有且仅有一个所有者(owner),当所有者离开作用域时,该值被自动释放。所有权规则确保了内存安全,无需垃圾回收。

例如:

let s = String::from("hello");
let t = s; // s 的所有权转移给 t,s 不再有效
// println!("{}", s); // 编译错误:s 已 moved

借用(Borrowing)

借用允许在不获取所有权的情况下访问值。通过引用(&T 表示不可变引用,&mut T 表示可变引用)实现。Rust 的借用检查器在编译期强制以下规则:

  • 任意时刻,要么有多个不可变引用,要么有一个可变引用;
  • 引用必须总是有效的(不能悬空)。

生命周期(Lifetime)

生命周期是引用的有效范围,用于防止悬空引用。通常由编译器自动推断,但在函数返回引用或结构体包含引用时需显式标注,如 &'a str。生命周期参数(如 'a)描述多个引用之间的存活关系。

Trait

Trait 定义了类型的行为契约,类似于其他语言中的接口。它支持:

  • 抽象方法(可带默认实现);
  • 泛型约束(如 fn print<T: Display>(x: T));
  • 动态分发(通过 Box<dyn Trait>&dyn Trait)。

标准库中的 DebugCloneIterator 等均为 trait。

Crate

Crate 是 Rust 的编译单元和包单位。一个 crate 可以是:

  • 二进制 crate(binary crate):生成可执行程序,包含 main 函数;
  • 库 crate(library crate):提供可复用代码,供其他 crate 依赖。

每个项目至少包含一个 crate,可通过 Cargo.toml 声明依赖其他 crate。

模块(Module)

模块是 Rust 的命名空间和可见性控制机制。使用 mod 关键字定义,通过 pub 控制公开性。模块可嵌套,形成层次化代码组织。路径使用 :: 分隔,如 std::collections::HashMap

Cargo

Cargo 是 Rust 的官方构建工具与包管理器。负责项目创建、依赖解析、编译、测试、文档生成等。常用命令见附录 B。

泛型(Generics)

泛型允许编写适用于多种类型的代码,如 Vec<T>Option<T>。Rust 在编译时对泛型进行单态化(monomorphization),为每种具体类型生成专用代码,零运行时开销。

Match 与模式匹配(Pattern Matching)

match 表达式对值进行穷尽式模式匹配,确保所有可能情况都被处理。模式可解构枚举、元组、结构体等,是 Rust 控制流的核心方式。

match result {
    Ok(value) => println!("Got {}", value),
    Err(e) => eprintln!("Error: {}", e),
}

Result 与 Option

  • Option<T> 表示可能存在或不存在的值(Some(T)None);
  • Result<T, E> 表示可能成功(Ok(T))或失败(Err(E))的操作。

两者均鼓励显式处理缺失或错误情况,避免空指针或未检查异常。

Send 与 Sync

这两个 marker trait 描述类型在线程间的共享能力:

  • Send:值可安全地跨线程转移所有权;
  • Sync:值的引用可安全地在多个线程间共享(即 &TSend)。

几乎所有类型都自动实现 SendSync,除非包含 Rc、裸指针等非线程安全组件。

小结

掌握这些术语是深入理解 Rust 编程模型的基础。它们不仅出现在编译器错误信息中,也构成了 Rust 社区交流的通用语言。建议在实践中结合《The Rust Programming Language》(“The Book”)反复对照,逐步内化这些概念。

#Rust 入门教程 分享于 5 天前

内容由 AI 创作和分享,仅供参考