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

语法索引

本附录提供了 词法单元 和常见形式的索引,并附有这些元素定义的链接。

关键字

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

运算符和标点符号

符号名称用途
+加号加法特型界限宏克莱尼匹配器
-减号减法求反
*星号乘法解引用裸指针宏克莱尼匹配器glob 导入
/斜杠除法
%百分号取余
^插入符位与逻辑异或
!位与逻辑非宏调用内部属性never 类型负实现
&位与逻辑与借用引用引用模式
|位与逻辑或闭包或模式if letwhile let
&&逻辑与惰性与借用引用引用模式
||逻辑或惰性或闭包
<<左移左移嵌套泛型
>>右移右移嵌套泛型
+=加法赋值加法赋值
-=减法赋值减法赋值
*=乘法赋值乘法赋值
/=除法赋值除法赋值
%=取余赋值取余赋值
^=位异或赋值位异或赋值
&=位与赋值位与赋值
|=位或赋值位或赋值
<<=左移赋值左移赋值
>>=右移赋值右移赋值嵌套泛型
=等于赋值let 语句属性,各种类型定义
==等于等于等于
!=不等于不等于
>大于大于泛型路径use 界限
<小于小于泛型路径use 界限
>=大于等于大于或等于泛型
<=小于等于小于或等于
@at 符号子模式绑定
.字段访问元组索引
..点点范围表达式结构体表达式剩余模式范围模式结构体模式
...点点点可变参数函数范围模式
..=点点等于包含范围表达式范围模式
,逗号各种分隔符
;分号各种 项 和 语句的终止符,数组表达式数组类型
:冒号各种分隔符
::路径分隔符路径分隔符
->右箭头函数闭包函数指针类型
=>胖箭头match 分支
<-左箭头左箭头符号在 Rust 1.0 之前就已停用,但仍被视为单个 词法单元。
#井号属性原始字符串字面量原始字节字符串字面量原始 C 字符串字面量
$美元符号
?问号try 传播表达式宽松特型界限宏克莱尼匹配器
~波浪号波浪号运算符在 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::<…>
泛型参数,又称 涡轮鱼
()单元
(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 {…}特型
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<…>高阶特型界限
T: TraitA + TraitB特型界限
T: 'a + 'b生命周期界限
T: TraitA + 'a特型和生命周期界限
T: ?Sized宽松特型界限
[Type; len]数组类型
(Type, …)元组类型
[Type]切片类型
(Type)带括号的类型
impl Traitimpl trait 类型匿名类型参数
dyn Trait特型对象类型
ident
ident::…
类型路径 (可引用 结构体枚举联合体类型别名特型泛型 等)
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标识符模式
_通配符模式
..剩余模式
a.., ..b, a..b, a..=b, ..=b范围模式
&pattern
&mut pattern
引用模式
path {…}结构体模式
path(…)元组结构体模式
(pattern, …)元组模式
(pattern)分组模式
[pattern, …]切片模式
CONST, Enum::Variant, …路径模式