|
|
@ -1,6 +1,5 @@
|
|
|
|
## 附录 B:运算符与符号
|
|
|
|
## 附录 B:运算符与符号
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该附录包含了 Rust 目前出现过的各种符号,这些符号之前都分散在各个章节中。
|
|
|
|
该附录包含了 Rust 目前出现过的各种符号,这些符号之前都分散在各个章节中。
|
|
|
|
|
|
|
|
|
|
|
|
### 运算符
|
|
|
|
### 运算符
|
|
|
@ -12,7 +11,7 @@
|
|
|
|
<span class="caption">表 B-1:运算符</span>
|
|
|
|
<span class="caption">表 B-1:运算符</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 运算符 | 示例 | 解释 | 是否可重载 |
|
|
|
|
| 运算符 | 示例 | 解释 | 是否可重载 |
|
|
|
|
|----------|---------|-------------|---------------|
|
|
|
|
| ------------------------- | ------------------------------------------------------- | ---------------------------------- | -------------- |
|
|
|
|
| `!` | `ident!(...)`, `ident!{...}`, `ident![...]` | 宏展开 | |
|
|
|
|
| `!` | `ident!(...)`, `ident!{...}`, `ident![...]` | 宏展开 | |
|
|
|
|
| `!` | `!expr` | 按位非或逻辑非 | `Not` |
|
|
|
|
| `!` | `!expr` | 按位非或逻辑非 | `Not` |
|
|
|
|
| `!=` | `var != expr` | 不等比较 | `PartialEq` |
|
|
|
|
| `!=` | `var != expr` | 不等比较 | `PartialEq` |
|
|
|
@ -68,13 +67,12 @@
|
|
|
|
| <code>||</code> | <code>expr || expr</code> | 逻辑或 | |
|
|
|
|
| <code>||</code> | <code>expr || expr</code> | 逻辑或 | |
|
|
|
|
| `?` | `expr?` | 错误传播 | |
|
|
|
|
| `?` | `expr?` | 错误传播 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 非运算符符号
|
|
|
|
### 非运算符符号
|
|
|
|
|
|
|
|
|
|
|
|
<span class="caption">表 B-2:独立语法</span>
|
|
|
|
<span class="caption">表 B-2:独立语法</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ------------------------------------------- | ------------------------------------------------------ |
|
|
|
|
| `'ident` | 生命周期名称或循环标签 |
|
|
|
|
| `'ident` | 生命周期名称或循环标签 |
|
|
|
|
| `...u8`, `...i32`, `...f64`, `...usize`, 等 | 指定类型的数值常量 |
|
|
|
|
| `...u8`, `...i32`, `...f64`, `...usize`, 等 | 指定类型的数值常量 |
|
|
|
|
| `"..."` | 字符串常量 |
|
|
|
|
| `"..."` | 字符串常量 |
|
|
|
@ -92,7 +90,7 @@
|
|
|
|
<span class="caption">表 B-3:路径相关语法</span>
|
|
|
|
<span class="caption">表 B-3:路径相关语法</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| --------------------------------------- | ----------------------------------------------------------------- |
|
|
|
|
| `ident::ident` | 命名空间路径 |
|
|
|
|
| `ident::ident` | 命名空间路径 |
|
|
|
|
| `::path` | 从当前的包的根路径开始的相对路径 |
|
|
|
|
| `::path` | 从当前的包的根路径开始的相对路径 |
|
|
|
|
| `self::path` | 与当前模块相对的路径(如一个显式相对路径) |
|
|
|
|
| `self::path` | 与当前模块相对的路径(如一个显式相对路径) |
|
|
|
@ -103,13 +101,12 @@
|
|
|
|
| `type::method(...)` | 使用类型名进行方法调用, 以消除方法调用的二义性 |
|
|
|
|
| `type::method(...)` | 使用类型名进行方法调用, 以消除方法调用的二义性 |
|
|
|
|
| `<type as trait>::method(...)` | 将类型转换为特征,再进行方法调用,以消除方法调用的二义性 |
|
|
|
|
| `<type as trait>::method(...)` | 将类型转换为特征,再进行方法调用,以消除方法调用的二义性 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表 B-4 展示了使用泛型参数时用到的符号。
|
|
|
|
表 B-4 展示了使用泛型参数时用到的符号。
|
|
|
|
|
|
|
|
|
|
|
|
<span class="caption">表 B-4:泛型</span>
|
|
|
|
<span class="caption">表 B-4:泛型</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ------------------------------ | ------------------------------------------------------------------------------------------------- |
|
|
|
|
| `path<...>` | 为一个类型中的泛型指定具体参数(如 `Vec<u8>`) |
|
|
|
|
| `path<...>` | 为一个类型中的泛型指定具体参数(如 `Vec<u8>`) |
|
|
|
|
| `path::<...>`, `method::<...>` | 为一个泛型、函数或表达式中的方法指定具体参数,通常指双冒号(turbofish)(如 `"42".parse::<i32>()`) |
|
|
|
|
| `path::<...>`, `method::<...>` | 为一个泛型、函数或表达式中的方法指定具体参数,通常指双冒号(turbofish)(如 `"42".parse::<i32>()`) |
|
|
|
|
| `fn ident<...> ...` | 泛型函数定义 |
|
|
|
|
| `fn ident<...> ...` | 泛型函数定义 |
|
|
|
@ -124,7 +121,7 @@
|
|
|
|
<span class="caption">表 B-5:特征约束</span>
|
|
|
|
<span class="caption">表 B-5:特征约束</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ----------------------------- | ---------------------------------------------------------------------------------------- |
|
|
|
|
| `T: U` | 泛型参数 `T`需实现`U`类型 |
|
|
|
|
| `T: U` | 泛型参数 `T`需实现`U`类型 |
|
|
|
|
| `T: 'a` | 泛型 `T` 的生命周期必须长于 `'a`(意味着该类型不能传递包含生命周期短于 `'a` 的任何引用) |
|
|
|
|
| `T: 'a` | 泛型 `T` 的生命周期必须长于 `'a`(意味着该类型不能传递包含生命周期短于 `'a` 的任何引用) |
|
|
|
|
| `T : 'static` | 泛型 T 只能使用声明周期为'static 的引用 |
|
|
|
|
| `T : 'static` | 泛型 T 只能使用声明周期为'static 的引用 |
|
|
|
@ -137,7 +134,7 @@
|
|
|
|
<span class="caption">表 B-6:宏与属性</span>
|
|
|
|
<span class="caption">表 B-6:宏与属性</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ------------------------------------------- | -------- |
|
|
|
|
| `#[meta]` | 外部属性 |
|
|
|
|
| `#[meta]` | 外部属性 |
|
|
|
|
| `#![meta]` | 内部属性 |
|
|
|
|
| `#![meta]` | 内部属性 |
|
|
|
|
| `$ident` | 宏替换 |
|
|
|
|
| `$ident` | 宏替换 |
|
|
|
@ -150,7 +147,7 @@
|
|
|
|
<span class="caption">表 B-7:注释</span>
|
|
|
|
<span class="caption">表 B-7:注释</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 注释 |
|
|
|
|
| 符号 | 注释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ---------- | -------------------- |
|
|
|
|
| `//` | 行注释 |
|
|
|
|
| `//` | 行注释 |
|
|
|
|
| `//!` | 内部行(hang)文档注释 |
|
|
|
|
| `//!` | 内部行(hang)文档注释 |
|
|
|
|
| `///` | 外部行文档注释 |
|
|
|
|
| `///` | 外部行文档注释 |
|
|
|
@ -163,7 +160,7 @@
|
|
|
|
<span class="caption">表 B-8:元组</span>
|
|
|
|
<span class="caption">表 B-8:元组</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|--------|-------------|
|
|
|
|
| ------------------------ | ------------------------------------------------------------------------ |
|
|
|
|
| `()` | 空元组(亦称单元),即是字面值也是类型 |
|
|
|
|
| `()` | 空元组(亦称单元),即是字面值也是类型 |
|
|
|
|
| `(expr)` | 括号表达式 |
|
|
|
|
| `(expr)` | 括号表达式 |
|
|
|
|
| `(expr,)` | 单一元素元组表达式 |
|
|
|
|
| `(expr,)` | 单一元素元组表达式 |
|
|
|
@ -178,7 +175,7 @@
|
|
|
|
<span class="caption">表 B-9:大括号</span>
|
|
|
|
<span class="caption">表 B-9:大括号</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|---------|-------------|
|
|
|
|
| ------------ | ------------ |
|
|
|
|
| `{...}` | 代码块表达式 |
|
|
|
|
| `{...}` | 代码块表达式 |
|
|
|
|
| `Type {...}` | 结构体字面值 |
|
|
|
|
| `Type {...}` | 结构体字面值 |
|
|
|
|
|
|
|
|
|
|
|
@ -187,7 +184,7 @@
|
|
|
|
<span class="caption">表 B-10:方括号</span>
|
|
|
|
<span class="caption">表 B-10:方括号</span>
|
|
|
|
|
|
|
|
|
|
|
|
| 符号 | 解释 |
|
|
|
|
| 符号 | 解释 |
|
|
|
|
|---------|-------------|
|
|
|
|
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
|
|
| `[...]` | 数组 |
|
|
|
|
| `[...]` | 数组 |
|
|
|
|
| `[expr; len]` | 数组里包含`len`个`expr` |
|
|
|
|
| `[expr; len]` | 数组里包含`len`个`expr` |
|
|
|
|
| `[type; len]` | 数组里包含了`len`个`type`类型的对象 |
|
|
|
|
| `[type; len]` | 数组里包含了`len`个`type`类型的对象 |
|
|
|
|