第20章 高级特性

介绍不安全 Rust、高级 trait 与类型、函数指针与闭包,以及宏等不常用但重要的语言特性。

译文 · 基于 The Rust Programming Language(rustc 1.97.1)

高级特性

原文链接: https://doc.rust-lang.org/stable/book/ch20-00-advanced-features.html

  现在你已经学会了 Rust 编程语言中最常用的那些部分。在第二十一章再做一个项目之前,我们先来看语言中的一些方面:你可能偶尔会遇到它们,但未必会天天使用。你可以把这一章当作在遇到陌生内容时的参考。本章介绍的这些特性只会在非常特定的场景下派上用场。虽然你可能不会经常用到它们,但我们仍希望确保你了解 Rust 所提供的全部特性。

  本章将涉及如下内容:

  • 不安全 Rust:如何在特定场景下绕过 Rust 的部分安全保证,并自行承担维持这些保证的责任
  • 高级 trait:关联类型、默认类型参数、完全限定语法、超 trait,以及与 trait 相关的 newtype 模式
  • 高级类型:关于 newtype 模式的更多内容、类型别名、never 类型以及动态大小类型
  • 高级函数和闭包:函数指针和返回闭包
  • 宏:在编译时定义“用来定义更多代码的代码”的方式

  这是一组包罗万象的 Rust 特性,总有一些内容会对你有用!让我们开始吧!


20.1 不安全的 Rust

目前为止讨论过的代码都有 Rust 在编译时会强制执行的内存安全保证。然而,Rust 还隐藏有第二种语言,它不会强制执行这类内存安全保证:这被称为不安全 Rust,它与常规 Rust 代码无异,但提供了额外的超能力。

20.2 高级 Trait

在第十章「使用 trait 定义共享行为」一节,我们第一次接触 trait,不过当时还没有讨论更高级的细节。现在你对 Rust 已经了解更多了,我们可以来深入探究这些细枝末节。

20.3 高级类型

Rust 的类型系统有一些我们曾经提到但尚未讨论过的特性。首先我们将从一般意义上讨论 newtype 并探讨它们作为类型为何有用。接着会转向类型别名,一个类似于 newtype 但有着稍微不同的语义的功能。我们还会讨论 ! 类型和动态大小类型。

20.4 高级函数与闭包

本部分将探索一些有关函数和闭包的高级特性,这包括函数指针以及返回闭包。

20.5 宏

我们已经在本书中使用过像 println! 这样的宏了,不过尚未深入探讨什么是宏以及它是如何工作的。宏(Macro)指的是 Rust 中一系列的功能:使用 macro_rules! 的声明宏,和三种过程宏。

最后修改 August 11, 2026: 更新 (70a5af133)