Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

语法索引

本附录提供了 token 和常见形式的索引,带有指向定义这些元素位置的链接。

关键字

关键字使用
_通配符模式、推断常量、推断类型、占位生命周期、常量项、extern crate、use 声明、解构赋值
abstract保留关键字
asextern crate、use 声明、类型强制转换表达式、限定路径
asyncasync 函数、async 块、async 闭包
awaitawait 表达式
become保留关键字
box保留关键字
breakbreak 表达式
constconst 函数、const 项、const 泛型、const 块、原始借用运算符、原始指针类型、const 汇编操作数
continuecontinue 表达式
crateextern crate、可见性、路径
do保留关键字
dyntrait 对象
elselet 语句、if 表达式
enum枚举
externextern crate、extern 函数限定符、外部块、extern 函数指针类型
false布尔类型、布尔表达式、配置谓词
final保留关键字
fn函数、函数指针类型
fortrait 实现、迭代器循环、高阶 trait 约束
gen保留关键字
ifif 表达式、match 守卫
impl固有 impl、trait impl、impl trait 类型、匿名类型参数
in可见性、迭代器循环、汇编操作数
letlet 语句、if let 模式
loop无限循环
macro_rules声明宏
macro保留关键字
matchmatch 表达式
mod模块
move闭包表达式、async 块
mut借用表达式、标识符模式、引用模式、结构体模式、引用类型、原始指针类型、self 参数、静态项
override保留关键字
priv保留关键字
pub可见性
raw借用表达式、原始汇编
ref标识符模式、结构体模式
returnreturn 表达式
safe外部块函数、外部块静态项
selfextern crate、self 参数、可见性、self 路径
SelfSelf 类型路径、use 约束
static静态项、'static 生命周期
struct结构体
supersuper 路径、可见性
traittrait 项
true布尔类型、布尔表达式、配置谓词
try保留关键字
type类型别名
typeof保留关键字
union联合体项
unsafeunsafe 块、unsafe 属性、unsafe 模块、unsafe 函数、unsafe 外部块、unsafe 外部函数、unsafe 外部静态项、unsafe trait、unsafe trait 实现
unsized保留关键字
useuse 项、use 约束
virtual保留关键字
wherewhere 子句
while谓词循环
yield保留关键字

运算符和标点符号

符号名称使用
+加号加法、trait 约束、宏 Kleene 匹配器
-减号减法、取反
*星号乘法、解引用、原始指针、宏 Kleene 匹配器、glob 导入
/斜线除法
%百分号取余
^脱字符按位与逻辑 XOR
!非按位与逻辑 NOT、宏调用、内部属性、never 类型、否定 impl
&与按位与逻辑 AND、借用、引用、引用模式
|或按位与逻辑 OR、闭包、或模式、if let、while let
&&与与惰性 AND、借用、引用、引用模式
||或或惰性 OR、闭包
<<左移左移、嵌套泛型
>>右移右移、嵌套泛型
+=加等加法赋值
-=减等减法赋值
*=星等乘法赋值
/=斜等除法赋值
%=百分等取余赋值
^=脱字符等按位 XOR 赋值
&=与等按位 AND 赋值
|=或等按位 OR 赋值
<<=左移等左移赋值
>>=右移等右移赋值、嵌套泛型
=等赋值、let 语句、属性、各种类型定义
==等等相等
!=不等不等于
>大于大于、泛型、路径、use 约束
<小于小于、泛型、路径、use 约束
>=大于等于大于或等于、泛型
<=小于等于小于或等于
@At子模式绑定
.点字段访问、元组索引、方法调用、await 表达式
..点点范围表达式、结构体表达式、rest 模式、范围模式、结构体模式
...点点点可变参数函数、范围模式
..=点点等包含范围表达式、范围模式
,逗号各种分隔符
;分号各种项和语句的终止符、数组表达式、数组类型
:冒号各种分隔符
::路径分隔符路径分隔符
->右箭头函数、闭包、函数指针类型
=>胖箭头match 分支、宏
<-左箭头左箭头符号自 Rust 1.0 之前就一直未使用,但仍被视为单个 token。
#井号属性、原始字符串字面量、原始字节字符串字面量、原始 C 字符串字面量
$美元宏
?问号try 传播表达式、放宽 trait 约束、宏 Kleene 匹配器
~波浪号波浪号运算符自 Rust 1.0 之前就一直未使用,但其 token 仍可使用。

注释

其他 token

Token使用
ident标识符
r#ident原始标识符
'ident生命周期和循环标签
'r#ident原始生命周期和循环标签
…u8、…i32、…f64、…usize、…数字字面量
"…"字符串字面量
r"…"、r#"…"#、r##"…"##、…原始字符串字面量
b"…"字节字符串字面量
br"…"、br#"…"#、br##"…"##、…原始字节字符串字面量
'…'字符字面量
b'…'字节字面量
c"…"C 字符串字面量
cr"…"、cr#"…"#、cr##"…"##、…原始 C 字符串字面量

宏

语法使用
ident!(…)
ident! {…}
ident![…]
宏调用
$ident宏元变量
$ident:kind宏匹配器片段指示符
$(…)…宏重复

属性

语法使用
#[meta]外部属性
#![meta]内部属性

表达式

表达式使用
|…| expr
|…| -> Type { … }
闭包
ident::…路径
::crate_name::…显式 crate 路径
crate::…crate 相对路径
self::…模块相对路径
super::…父模块路径
Type::…
<Type as Trait>::ident
关联项
<Type>::…限定路径,可用于没有名称的类型,如 <&T>::…、<[T]>::… 等。
Trait::method(…)
Type::method(…)
<Type as Trait>::method(…)
消歧方法调用
method::<…>(…)
path::<…>
泛型参数,又名 turbofish
()单元
(expr)括号表达式
(expr,)单元素元组表达式
(expr, …)元组表达式
expr(expr, …)调用表达式
expr.0、expr.1、…元组索引表达式
expr.ident字段访问表达式
{…}块表达式
Type {…}结构体表达式
Type(…)元组结构体构造函数
[…]数组表达式
[expr; len]重复数组表达式
expr[..]、expr[a..]、expr[..b]、expr[a..b]、expr[a..=b]、expr[..=b]数组和切片索引表达式
if expr {…} else {…}if 表达式
match expr { pattern => {…} }match 表达式
loop {…}无限循环表达式
while expr {…}谓词循环表达式
for pattern in expr {…}迭代器循环
&expr
&mut expr
借用表达式
&raw const expr
&raw mut expr
原始借用表达式
*expr解引用表达式
expr?try 传播表达式
-expr取反表达式
!expr按位与逻辑 NOT 表达式
expr as Type类型强制转换表达式

项

程序项 是 crate 的组成部分。

项使用
mod ident;
mod ident {…}
模块
use path;use 声明
fn ident(…) {…}函数
type Type = Type;类型别名
struct ident {…}结构体
enum ident {…}枚举
union ident {…}联合体
trait ident {…}trait
impl Type {…}
impl Type for Trait {…}
实现
const ident = expr;常量项
static ident = expr;静态项
extern "C" {…}外部块
fn ident<…>(…) …
struct ident<…> {…}
enum ident<…> {…}
impl<…> Type<…> {…}
泛型定义

类型表达式

类型表达式 用于引用类型。

类型使用
bool、u8、f64、str、…原始类型
for<…>高阶 trait 约束
T: TraitA + TraitBtrait 约束
T: 'a + 'b生命周期约束
T: TraitA + 'atrait 和生命周期约束
T: ?Sized放宽 trait 约束
[Type; len]数组类型
(Type, …)元组类型
[Type]切片类型
(Type)括号类型
impl Traitimpl trait 类型、匿名类型参数
dyn Traittrait 对象类型
ident
ident::…
类型路径(可以引用结构体、枚举、联合体、类型别名、trait、泛型等)
Type<…>
Trait<…>
泛型参数(例如 Vec<u8>)
Trait<ident = Type>关联类型绑定(例如 Iterator<Item = T>)
Trait<ident: …>关联类型约束(例如 Iterator<Item: Send>)
&Type
&mut Type
引用类型
*mut Type
*const Type
原始指针类型
fn(…) -> Type函数指针类型
_推断类型、推断常量
'_占位生命周期
!never 类型

模式

模式 用于匹配值。

模式使用
"foo"、'a'、123、2.4、…字面量模式
ident标识符模式
_通配符模式
..rest 模式
a..、..b、a..b、a..=b、..=b范围模式
&pattern
&mut pattern
引用模式
path {…}结构体模式
path(…)元组结构体模式
(pattern, …)元组模式
(pattern)分组模式
[pattern, …]切片模式
CONST、Enum::Variant、…路径模式