ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 语法索引 > [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`作为“索引”。