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

运算符和标点符号

符号名称使用
+加号加法trait 约束宏 Kleene 匹配器
-减号减法取反
*星号乘法解引用原始指针宏 Kleene 匹配器glob 导入
/斜线除法
%百分号取余
^脱字符按位与逻辑 XOR
!按位与逻辑 NOT宏调用内部属性never 类型否定 impl
&按位与逻辑 AND借用引用引用模式
|按位与逻辑 OR闭包或模式if letwhile 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.0expr.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<…> {…}
泛型定义

类型表达式

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

类型使用
boolu8f64str、…原始类型
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'1232.4、…字面量模式
ident标识符模式
_通配符模式
..rest 模式
a....ba..ba..=b..=b范围模式
&pattern
&mut pattern
引用模式
path {…}结构体模式
path(…)元组结构体模式
(pattern, …)元组模式
(pattern)分组模式
[pattern, …]切片模式
CONSTEnum::Variant、…路径模式