# 语法索引
> [syntax-index.md](https://github.com/rust-lang/rust/blob/master/src/doc/book/syntax-index.md)
commit 1b438314a07d4cc2ecf0d82cd195e28bef73eac2
### 关键词(Keywords)
- `as`: 原始的类型转换。详见[类型转换(`as`)](#)。
- `break`: 退出循环。详见[循环(提早结束迭代)](#)。
- `const`: 常量和常量裸指针。详见[`const`和`static`](#),[裸指针](#)。
- `continue`: 继续进行下一次迭代。详见[循环(提早结束迭代)](#)。
- `crate`: 外部 crate 链接。详见[crate 和模块(导入外部 crate)](#)。
- `else`: `if`和`if let`的失败分支。详见[`if`](#),[`if let`](#)。
- `enum`: 定义枚举。详见[枚举](#)。
- `extern`: 外部 crate,函数,和变量链接。详见[crate 和模块(导入外部 crate)](#),[外部函数接口](#)。
- `false`: 布尔值 false 常量。详见[原生类型(布尔型)](#)。
- `fn`: 函数定义和函数指针类型。详见[函数](#)。
- `for`: 循环,`impl`trait 语法的一部分,和高级生命周期语法。详见[循环(for)](#),[方法语法](#)。
- `if`: 条件分支。详见[`if`](#),[`if let`](#)。
- `impl`: 继承和 trait 实现块。详见[方法语法](#)。
- `in`: `for`循环语法的一部分。详见[循环(for)](#)。
- `let`: 变量绑定。详见[变量绑定](#)。
- `loop`: 无条件的无限循环。详见[循环(loop)](#)。
- `match`: 模式匹配。详见[匹配](#)。
- `mod`: 模块声明。详见[crate 和模块(定义模块)](#)。
- `move`: 闭包语法的一部分。详见[闭包(`move`闭包)](#)。
- `mut`: 表示指针类型和模式绑定的可变性。详见[可变性](#)。
- `pub`: 表示`struct`字段,`impl`块和模块的共有可见性。详见[crate 和模块(导出共有接口)](#)。
- `ref`: 通过引用绑定。详见[模式(`ref`和`ref mut`)](#)。
- `return`: 从函数返回。详见[函数(提前返回)](#)。
- `Self`: (trait)实现者类型的别名。详见[Traits](#)。
- `self`: 方法的主体。详见[方法语法(方法调用)](#)。
- `static`: 全局变量。详见[`const`和`static`(`static`)](#)。
- `struct`: 结构体定义。详见[结构体](#)。
- `trait`: trait 定义。详见[Traits](#)。
- `true`: 布尔值 true 常量。详见[原生类型(布尔型)](#)。
- `type`: 类型别名和关联类型定义。详见[`type`别名](#),[关联类型](#)。
- `unsafe`: 表示不安全代码,函数,trait 和其实现。详见[不安全代码](#)。
- `use`: 向作用域导入符号。详见[crate 和模块(使用`use`从模块导入)](#)。
- `where`: 类型限制从句。详见[Traits(`where`从句)](#)。
- `while`: 条件循环。详见[循环(`while`)](#)。
### 运算符和记号
- `!` (`ident!(…)`, `ident!{…}`, `ident![…]`): 表示宏扩展。详见[宏](#)。
- `!` (`!expr`): 位计算或逻辑互补。可重载(`Not`)。
- `!=` (`var != expr`): 不等。可重载(`PartialEq`)。
- `%` (`expr % expr`): 算数取余。可重载(`Rem`)。
- `%=` (`var %= expr`): 算数取余并赋值。
- `&` (`expr & expr`): 位计算和。可重载(`BitAnd`)。
- `&` (`&expr`): 借用。详见[引用和借用](#)。
- `&` (`&type`, `&mut type`, `&'a type`, `&'a mut type`): 借用指针类型。详见[引用和借用](#)。
- `&=` (`var &= expr`): 位计算和并赋值。
- `&&` (`expr && expr`): 逻辑和。
- `*` (`expr * expr`): 算数乘法。可重载(`Mul`)。
- `*` (`*expr`): 解引用。
- `*` (`*const type`, `*mut type`): 裸指针。详见[裸指针](#)。
- `*=` (`var *= expr`): 算数乘法并赋值。
- `+` (`expr + expr`): 算数加法。可重载(`Add`)。
- `+` (`trait + trait`, `'a + trait`): 复合类型限制。详见[Traits(多个 trait bound)](#)。
- `+=` (`var += expr`): 算数加法并赋值。
- `,`: 参数和元素分隔符。详见[属性](#),[函数](#),[结构体](#),[泛型](#),[匹配](#),[闭包](#)和[crate 和模块(使用`use`从模块导入)](#)。
- `-` (`expr - expr`): 算数减法。可重载(`Sub`)。
- `-` (`- expr`): 算数取反。可重载(`Neg`)。
- `-=` (`var -= expr`): 算数减法并赋值。
- `->` (`fn(…) -> type`, `|…| -> type`): 函数和闭包的返回值类型。详见[函数](#),[闭包](#)。
- `-> !` (`fn(…) -> !`, `|…| -> !`): 发散函数或闭包。详见[发散函数](#)
- `.` (`expr.ident`): 访问方法。详见[结构体](#),[方法语法](#)。
- `..` (`..`, `expr..`, `..expr`, `expr..expr`): 右开区间的范围常量
- `..` (`..expr`): 结构体常量更新语法。详见[结构体(更新语法)](#)。
- `..` (`variant(x, ..)`, `struct_type { x, .. }`): “余下的”模式绑定。详见[模式(忽略绑定)](#)。
- `...` (`expr ... expr`): 闭区间范围模式。详见[模式(范围)](#)。
- `/` (`expr / expr`): 算数除法。可重载(`Div`)。
- `/=` (`var /= expr`): 算数除法并赋值。
- `:` (`pat: type`, `ident: type`): 限制。详见[变量绑定](#),[函数](#),
- `:` (`ident: expr`): 结构体字段初始化。详见[结构体](#)。
- `:` (`'a: loop {…}`): 循环标签。详见[循环(循环标签)](#)
- `;`: 语句和项终结符。
- `;` (`[…; len]`): 定长数组语法的一部分。详见[原生类型(数组)](#)。
- `<<` (`expr << expr`): 左移。可重载(`Shl`)。
- `<<=` (`var <<= expr`): 左移并赋值。
- `<` (`expr < expr`): 小于。可重载(`PartialOrd`)。
- `<=` (`var <= expr`): 小于。可重载(`PartialOrd`)。
- `=` (`var = expr`, `ident = type`): 赋值 / 等价。详见[变量绑定](#),[`type`别名](#),默认泛型参数。
- `==` (`var == expr`): 相等。可重载(`PartialEq`)。
- `=>` (`pat => expr`): 匹配分支语法的一部分。详见[匹配](#)。
- `>` (`expr > expr`): 大于。可重载(`PartialOrd`)。
- `>=` (`var >= expr`): 大于。可重载(`PartialOrd`)。
- `>>` (`expr >> expr`): 右移。可重载(`Shr`)。
- `>>=` (`var >>= expr`): 右移并赋值。
- `@` (`ident @ pat`): 模式绑定。详见[模式(绑定)](#)。
- `^` (`expr ^ expr`): 位计算异或。可重载(`BitXor`)。
- `^=` (`var ^= expr`): 位计算异或并赋值。
- `|` (`expr | expr`): 位计算或。可重载(`BitOr`)。
- `|` (`pat | pat`): 另外的模式。详见[模式(多个模式)](#)。
- `|` (`|…| expr`): 闭包。详见[闭包](#)。
- `|=` (`var |= expr`): 位计算或并赋值。
- `||` (`expr || expr`): 逻辑或。
- `_`: “忽略”的模式匹配。详见[模式(忽略绑定)](#)。
### 其他语法
- `'ident`: 命名的生命周期或循环标签。详见[模式(绑定)](#)。
- `…u8`, `…i32`, `…f64`, `…usize`, …: 特定类型的数字常量。
- `"…"`: 字符串常量。详见[字符串](#)。
- `r"…"`, `r#"…"#`, `r##"…"##`, …: 原始字符串常量,转义字符不会被处理。详见[参考手册(原始字符串常量)](http://doc.rust-lang.org/reference.html#raw-string-literals)。
- `b"…"`: 字节字符串常量,生成一个`[u8]`而不是一个字符串。详见[参考手册(字节字符串常量)](http://doc.rust-lang.org/reference.html#byte-string-literals)。
- `br"…"`, `br#"…"#`, `br##"…"##`, …: 原始字节字符串常量,原始和字节字符串常量的组合。详见[参考手册(原始字节字符串常量)](http://doc.rust-lang.org/reference.html#raw-byte-string-literals)。
- `'…'`: 字符常量。详见[原生类型(`char`)](#)。
- `b'…'`: ASCII 字节常量。
- `|…| expr`: 闭包。详见[闭包](#)。
- `ident::ident`: 路径。详见[crate 和模块(定义模块)](#)。
- `::path`: 相对 crate 根的路径(也就是说,一个明确的绝对路径)。详见[crate 和模块(`pub use`重导出)](#)。
- `self::path`: 相对当前模块的路径(也就是说,一个明确的相对路径)。详见[crate 和模块(`pub use`重导出)](#)。
- `super::path`: 相对当前模块父模块的路径。详见[crate 和模块(`pub use`重导出)](#)。
- `type::ident`: 关联常量,函数和类型。详见[关联类型](#)。
- `<type>::…`: 一个不能直接命名的类型的关联项(例如,`<&T>::…`,`<[T]>::…`等)。详见[关联类型](#)。
- `path<…>` (*e.g.*`Vec<u8>`): 用类型指定泛型的参数类型。详见[泛型](#)。
- `path::<…>`, `method::<…>` (*e.g.*`"42".parse::<i32>()`): 用表达式指定泛型类型,函数或方法的参数。
- `fn ident<…> …`: 定义泛型函数。详见[泛型](#)。
- `struct ident<…> …`: 定义泛型结构体。详见[泛型](#)。
- `enum ident<…> …`: 定义泛型枚举。详见[泛型](#)。
- `impl<…> …`: 定义泛型实现。
- `for<…> type`: 高级生命周期 bound。
- `type<ident=type>` (*e.g.*`Iterator<Item=T>`): 一个泛型类型,它有一个或多个有特定赋值的关联类型。详见[关联类型](#)。
- `T: U`: 泛型参数`T`被限制为实现了`U`的类型。详见[Traits](#)。
- `T: 'a`: 泛型类型`T`必须超过声明周期`'a`
- `'b: 'a`: 泛型生命周期`'b`必须超过声明周期`'a`
- `T: ?Sized`: 允许泛型类型是一个不定长度类型。详见[不定长类型](#)。
- `'a + trait`, `trait + trait`: 复合类型限制。详见[Traits(多个 trait bound)](#)
- `#[meta]`: 外部属性。详见[属性](#)。
- `#![meta]`: 内部属性。详见[属性](#)。
- `$ident`: 宏替代(部分)。详见[宏](#)。
- `$ident:kind`: 宏 capture。详见[宏](#)。
- `$(…)…`: 宏重复(部分)。详见[宏](#)。
- `//`: 行注释。详见[注释](#)。
- `//!`: 内部行文档注释。详见[注释](#)。
- `///`: 外部行文档注释。详见[注释](#)。
- `/*…*/`: 块注释。详见[注释](#)。
- `/*!…*/`: 内部块文档注释。详见[注释](#)。
- `/**…*/`: 内部块文档注释。详见[注释](#)。
- `()`: 空元组(也就是单元),常量和类型。
- `(expr)`: 自带括号的表达式。
- `(expr,)`: 单元素元组表达式。详见[原生类型(元组)](#)。
- `(type,)`: 单元素元组类型。详见[原生类型(元组)](#)。
- `(expr, …)`: 元组类型。详见[原生类型(元组)](#)。
- `(type, …)`: 元组类型。详见[原生类型(元组)](#)。
- `expr(expr, …)`: 函数调用表达式。也用于初始化元组`struct`和元组`enum`变量。详见[函数](#)。
- `ident!(…)`, `ident!{…}`, `ident![…]`: 宏调用。详见[宏](#)。
- `expr.0`, `expr.1`, …: 元组索引。详见[原生类型(元组索引)](#)。
- `{…}`: 表达式块
- `Type {…}`: `struct`常量。详见[结构体](#)。
- `[…]`: 数组常量。详见[原生类型(数组)](#)。
- `[expr; len]`: 包含`expr`的`len`次拷贝的数组常量。详见[原生类型(数组)](#)。
- `[type; len]`: 包含`len`个`type`实例的数组类型。详见[原生类型(数组)](#)。
- `expr[expr]`: 集合索引。可重载(`Index`,`IndexMut`)。
- `expr[..]`, `expr[a..]`, `expr[..b]`, `expr[a..b]`: 用来生成集合切片的集合索引,分别使用`Range`,`RangeFrom`,`RangeTo`,`RangeFull`作为“索引”。
- 前言
- 贡献者
- 1.介绍
- 2.准备
- 3.学习 Rust
- 3.1.猜猜看
- 3.2.哲学家就餐问题
- 3.3.其它语言中的 Rust
- 4.语法和语义
- 4.1.变量绑定
- 4.2.函数
- 4.3.原生类型
- 4.4.注释
- 4.5.If语句
- 4.6.循环
- 4.7.所有权
- 4.8.引用和借用
- 4.9.生命周期
- 4.10.可变性
- 4.11.结构体
- 4.12.枚举
- 4.13.匹配
- 4.14.模式
- 4.15.方法语法
- 4.16.Vectors
- 4.17.字符串
- 4.18.泛型
- 4.19.Traits
- 4.20.Drop
- 4.21.if let
- 4.22.trait 对象
- 4.23.闭包
- 4.24.通用函数调用语法
- 4.25.crate 和模块
- 4.26.const和static
- 4.27.属性
- 4.28.type别名
- 4.29.类型转换
- 4.30.关联类型
- 4.31.不定长类型
- 4.32.运算符和重载
- 4.33.Deref强制多态
- 4.34.宏
- 4.35.裸指针
- 4.36.不安全代码
- 5.高效 Rust
- 5.1.栈和堆
- 5.2.测试
- 5.3.条件编译
- 5.4.文档
- 5.5.迭代器
- 5.6.并发
- 5.7.错误处理
- 5.8.选择你的保证
- 5.9.外部函数接口
- 5.10.Borrow 和 AsRef
- 5.11.发布途径
- 5.12.不使用标准库
- 6.Rust 开发版
- 6.1.编译器插件
- 6.2.内联汇编
- 6.4.固有功能
- 6.5.语言项
- 6.6.链接进阶
- 6.7.基准测试
- 6.8.装箱语法和模式
- 6.9.切片模式
- 6.10.关联常量
- 6.11.自定义内存分配器
- 7.词汇表
- 8.语法索引
- 9.参考文献
- 附录:名词中英文对照