# 語法索引
> [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.參考文獻
- 附錄:名詞中英文對照