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

语法索引

本附录提供了词法单元和常见形式的索引,以及指向这些元素定义位置的链接。

关键字

关键字用途
_通配符模式推断 const推断类型占位生命周期常量项extern crateuse 声明解构赋值
abstract保留关键字
asextern crateuse 声明类型转换表达式限定路径
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固有实现trait 实现impl trait 类型匿名类型参数
in可见性迭代器循环汇编操作数
letlet 语句if let 模式
loop无限循环
macro_rules通过示例定义的宏
macro保留关键字
matchmatch 表达式
mod模块
move闭包表达式异步块
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 导入]
/斜杠除法
%百分号取余
^脱字符按位和逻辑异或
!按位和逻辑非、[宏调用]、内部属性、[永不类型]、[否定实现]
&按位和逻辑与借用、[引用]、[引用模式]
|按位和逻辑或、[闭包]、[或模式]、if letwhile let
&&与与惰性与借用、[引用]、[引用模式]
||或或惰性或、[闭包]
<<左移左移嵌套泛型
>>右移右移嵌套泛型
+=加等加法赋值
-=减等减法赋值
*=乘等乘法赋值
/=除等除法赋值
%=模等取余赋值
^=异或等按位异或赋值
&=与等按位与赋值
|=或等按位或赋值
<<=左移等左移赋值
>>=右移等右移赋值嵌套泛型
=等号[赋值]、[let 语句]、[属性]、各种类型定义
==等等等于
!=不等不等于
>大于大于、[泛型]、[路径]、[use 约束]
<小于小于、[泛型]、[路径]、[use 约束]
>=大于等于大于等于、[泛型]
<=小于等于小于等于
@At子模式绑定
.字段访问、[元组索引]、[方法调用]、[await 表达式]
..点点范围表达式、[结构体表达式]、休息模式范围模式结构体模式
...点点点可变参数函数范围模式
..=点点等包含范围表达式范围模式
,逗号各种分隔符
;分号各种项和语句的终止符、[数组表达式]、[数组类型]
:冒号各种分隔符
::路径分隔符路径分隔符
->右箭头[函数]、[闭包]、[函数指针类型]
=>胖箭头match 分支、[宏]
<-左箭头左箭头符号自 Rust 1.0 之前就未使用,但仍被视为单个词法单元。
#井号[属性]、[原始字符串字面量]、[原始字节字符串字面量]、[原始 C 字符串字面量]
$美元符号[宏]
?问号try 传播表达式、[放宽的 trait 约束]、[宏 Kleene 匹配器]
~波浪号波浪号运算符自 Rust 1.0 之前就未使用,但其词法单元仍可使用。

注释

其他词法单元

词法单元用途
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按位和逻辑非表达式
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函数指针类型
_推断类型推断 const
'_占位生命周期
!永不类型

模式

模式用于匹配值。

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