附录 A:关键词

以下列表包含为当前或将来保留的关键字 由 Rust 语言使用。因此,它们不能用作标识符(除了 作为原始标识符,我们将在“原始 标识符“部分)。标识符是名称 函数、变量、参数、结构体字段、模块、板条箱、常量、 宏、静态值、属性、类型、特征或生命周期。

当前使用的关键字

以下是当前使用的关键字列表及其功能 描述。

  • as- 执行原始转换,消除包含 一个项目,或重命名语句中的项目use
  • async- 返回 a 而不是阻塞当前线程Future
  • await- 暂停执行,直到 A 的结果准备就绪Future
  • break- 立即退出 Loop
  • const- 定义常量项或常量原始指针
  • continue- 继续进行下一次循环迭代
  • crate- 在模块路径中,引用 crate 根
  • dyn- 动态 dispatch 到 trait 对象
  • else- fallback for and control flow 结构ifif let
  • enum- 定义枚举
  • extern- 链接外部函数或变量
  • false- 布尔 false 文本
  • fn- 定义函数或函数指针类型
  • for- 遍历迭代器中的项目,实现 trait 或指定 更高等级的生命周期
  • if- 基于条件表达式结果的分支
  • impl- 实现 inherent 或 trait 功能
  • in- 循环语法的一部分for
  • let- 绑定一个变量
  • loop- 无条件循环
  • match- 将值与模式匹配
  • mod- 定义一个模块
  • move- Make a closure 获取其所有捕获的所有权
  • mut- 表示引用、原始指针或模式绑定中的可变性
  • pub- 表示结构体字段、块或模块中的公众可见性impl
  • ref- 按引用绑定
  • return- return from function (从函数返回)
  • Self- 我们正在定义或实现的类型的类型别名
  • self- 方法主题或当前模块
  • static- 全局变量或生命周期持续整个程序执行
  • struct- 定义结构
  • super- 当前模块的父模块
  • trait- 定义特征
  • true- 布尔 true 文本
  • type- 定义类型别名或关联类型
  • union- 定义联合;在使用 在联合声明中
  • unsafe- 表示不安全的代码、函数、特征或实现
  • use- 将符号引入范围
  • where- 表示约束类型的子句
  • while- 根据表达式的结果有条件地循环

保留供将来使用的关键字

以下关键字尚不具有任何功能,但由 Rust 以备将来使用。

  • abstract
  • become
  • box
  • do
  • final
  • macro
  • override
  • priv
  • try
  • typeof
  • unsized
  • virtual
  • yield

原始标识符

原始标识符是一种语法,可让您在不需要的地方使用关键字 通常被允许。您可以通过在关键字前加上 .r#

例如,是一个关键字。如果您尝试编译以下函数 ,使用作为其名称:matchmatch

文件名: src/main.rs

fn match(needle: &str, haystack: &str) -> bool {
    haystack.contains(needle)
}

你将收到此错误:

error: expected identifier, found keyword `match`
 --> src/main.rs:4:4
  |
4 | fn match(needle: &str, haystack: &str) -> bool {
  |    ^^^^^ expected identifier, found keyword

该错误显示您不能将关键字用作函数 标识符。要用作函数名称,您需要使用 raw identifier 语法,如下所示:matchmatch

文件名: src/main.rs

fn r#match(needle: &str, haystack: &str) -> bool {
    haystack.contains(needle)
}

fn main() {
    assert!(r#match("foo", "foobar"));
}

此代码将编译时不会出现任何错误。记下函数上的前缀 name 以及函数在 中调用的位置。r#main

原始标识符允许您使用您选择的任何单词作为标识符,即使 该单词恰好是 reserved 关键字。这给了我们更多的自由 选择标识符名称,并允许我们与 这些词不是关键词的语言。此外,原始标识符 允许你使用用与 crate 不同的 Rust 版本编写的库 使用。例如,不是 2015 版中的关键词,而是 2018 版中的关键词 版。如果您依赖于使用 2015 版编写的库,并且 有一个函数,你需要使用 Raw identifier 语法,在 在这种情况下,从 2018 版代码调用该函数。见附录 E 了解有关版本的更多信息。trytryr#try

本文档由官方文档翻译而来,如有差异请以官方英文文档(https://doc.rust-lang.org/)为准