From bd3703424c2102ef3bd328b6912c253c57070d00 Mon Sep 17 00:00:00 2001
From: Xuzheng77s <xuzheng77@outlook.com>
Date: Sun, 28 Aug 2022 22:21:17 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=99=84=E5=BD=95appendix?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/appendix-01-keywords.md                 | 10 +++++-----
 src/appendix-02-operators.md                |  8 ++++----
 src/appendix-03-derivable-traits.md         |  7 ++++---
 src/appendix-04-useful-development-tools.md | 14 ++++++--------
 src/appendix-05-editions.md                 |  3 ++-
 src/appendix-07-nightly-rust.md             |  3 ++-
 6 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/src/appendix-01-keywords.md b/src/appendix-01-keywords.md
index ef09912..039f0ac 100644
--- a/src/appendix-01-keywords.md
+++ b/src/appendix-01-keywords.md
@@ -2,7 +2,7 @@
 
 > [appendix-01-keywords.md](https://github.com/rust-lang/book/blob/main/src/appendix-01-keywords.md)
 > <br>
-> commit de7174e6704ee4f6c8cdaead2c5c47e593775ec5
+> commit efbafdba3618487fbc9305318fcab9775132ac15
 
 下面的列表包含 Rust 中正在使用或者以后会用到的关键字。因此,这些关键字不能被用作标识符(除了 “[原始标识符][raw-identifiers]” 部分介绍的原始标识符),这包括函数、变量、参数、结构体字段、模块、crate、常量、宏、静态值、属性、类型、trait 或生命周期
 的名字。
@@ -13,17 +13,17 @@
 
 如下关键字目前有对应其描述的功能。
 
-* `as` - 强制类型转换,消除特定包含项的 trait 的歧义,或者对 `use` 和 `extern crate` 语句中的项重命名
+* `as` - 强制类型转换,消除特定包含项的 trait 的歧义,或者对 `use` 语句中的项重命名
 * `async` - 返回一个 `Future` 而不是阻塞当前线程
 * `await` - 暂停执行直到 `Future` 的结果就绪
 * `break` - 立刻退出循环
 * `const` - 定义常量或不变裸指针(constant raw pointer)
 * `continue` - 继续进入下一次循环迭代
-* `crate` - 链接(link)一个外部 **crate** 或一个代表宏定义的 **crate** 的宏变量
+* `crate` - 在模块路径中,代指 crate root
 * `dyn` - 动态分发 trait 对象
 * `else` - 作为 `if` 和 `if let` 控制流结构的 fallback
 * `enum` - 定义一个枚举
-* `extern` - 链接一个外部 **crate** 、函数或变量
+* `extern` - 链接一个外部函数或变量
 * `false` - 布尔字面值 `false`
 * `fn` - 定义一个函数或 **函数指针类型** (*function pointer type*)
 * `for` - 遍历一个迭代器或实现一个 trait 或者指定一个更高级的生命周期
@@ -111,6 +111,6 @@ fn main() {
 
 此代码编译没有任何错误。注意 `r#` 前缀需同时用于函数名定义和 `main` 函数中的调用。
 
-原始标识符允许使用你选择的任何单词作为标识符,即使该单词恰好是保留关键字。 此外,原始标识符允许你使用以不同于你的 crate 使用的 Rust 版本编写的库。比如,`try` 在 2015 edition 中不是关键字,而在 2018 edition 则是。所以如果用 2015 edition 编写的库中带有 `try` 函数,在 2018 edition 中调用时就需要使用原始标识符语法,在这里是 `r#try`。有关版本的更多信息,请参见[附录 E][appendix-e].
+原始标识符允许使用你选择的任何单词作为标识符,即使该单词恰好是保留关键字。 这给予了我们更大的自由来选择名字,这样与其他语言交互式就不用考虑到关键字问题,在要交互的语言中这个名字不是关键字。此外,原始标识符允许你使用以不同于你的 crate 使用的 Rust 版本编写的库。比如,`try` 在 2015 edition 中不是关键字,而在 2018 edition 则是。所以如果用 2015 edition 编写的库中带有 `try` 函数,在 2018 edition 中调用时就需要使用原始标识符语法,在这里是 `r#try`。有关版本的更多信息,请参见[附录 E][appendix-e].
 
 [appendix-e]: appendix-05-editions.html
diff --git a/src/appendix-02-operators.md b/src/appendix-02-operators.md
index 7489051..2addafc 100644
--- a/src/appendix-02-operators.md
+++ b/src/appendix-02-operators.md
@@ -2,7 +2,7 @@
 
 > [appendix-02-operators.md](https://github.com/rust-lang/book/blob/main/src/appendix-02-operators.md)
 > <br />
-> commit f83c4d08d2bc9c1e1c33037747ffe818b397e67a
+> commit 396fdb69de7fb18f24b15c7ad13491b1c1fa7231
 
 该附录包含了 Rust 语法的词汇表,包括运算符以及其他的符号,这些符号单独出现或出现在路径、泛型、trait bounds、宏、属性、注释、元组以及大括号上下文中。
 
@@ -16,7 +16,7 @@
 |----------|---------|-------------|---------------|
 | `!` | `ident!(...)`, `ident!{...}`, `ident![...]` | 宏展开 |  |
 | `!` | `!expr` | 按位非或逻辑非 | `Not` |
-| `!=` | `var != expr` | 不等比较 | `PartialEq` |
+| `!=` | `expr != expr` | 不等比较 | `PartialEq` |
 | `%` | `expr % expr` | 算术取余 | `Rem` |
 | `%=` | `var %= expr` | 算术取余与赋值 | `RemAssign` |
 | `&` | `&expr`, `&mut expr` | 借用 | |
@@ -71,7 +71,7 @@
 
 ### 非运算符符号
 
-下面的列表中包含了所有和运算符不一样功能的非字符符号;也就是说,他们并不像函数调用或方法调用一样表现。
+下面的列表中包含了所有和运算符不一样功能的符号;也就是说,他们并不像函数调用或方法调用一样表现。
 
 表 B-2 展示了以其自身出现以及出现在合法其他各个地方的符号。
 
@@ -83,7 +83,7 @@
 | `...u8`, `...i32`, `...f64`, `...usize`, 等 | 指定类型的数值常量 |
 | `"..."` | 字符串常量 |
 | `r"..."`, `r#"..."#`, `r##"..."##`, etc. | 原始字符串字面值, 未处理的转义字符 |
-| `b"..."` | 字节字符串字面值; 构造一个 `[u8]` 类型而非字符串 |
+| `b"..."` | 字节字符串字面值; 构造一个字节数组类型而非字符串 |
 | `br"..."`, `br#"..."#`, `br##"..."##`, 等 | 原始字节字符串字面值,原始和字节字符串字面值的结合 |
 | `'...'` | 字符字面值 |
 | `b'...'` | ASCII 码字节字面值 |
diff --git a/src/appendix-03-derivable-traits.md b/src/appendix-03-derivable-traits.md
index c1972bb..0b9ede0 100644
--- a/src/appendix-03-derivable-traits.md
+++ b/src/appendix-03-derivable-traits.md
@@ -1,7 +1,8 @@
 ## 附录 C:可派生的 trait
 
-> [appendix-03-derivable-traits.md](https://github.com/rust-lang/book/blob/main/src/appendix-03-derivable-traits.md) > <br />
-> commit bb8f6cc9ba2724e8363823bb6bf176cd33584548
+> [appendix-03-derivable-traits.md](https://github.com/rust-lang/book/blob/main/src/appendix-03-derivable-traits.md)
+> <br />
+> commit c07dddac692848ade6c2112c8e15a7087fbbec45
 
 在本书的各个部分中,我们讨论了可应用于结构体和枚举定义的 `derive` 属性。`derive` 属性会在使用 `derive` 语法标记的类型上生成对应 trait 的默认实现的代码。
 
@@ -15,7 +16,7 @@
 
 如果你希望不同于 `derive` 属性所提供的行为,请查阅 [标准库文档](https://doc.rust-lang.org/std/index.html) 中每个 trait 的细节以了解如何手动实现它们。
 
-标准库中定义的其它 trait 不能通过 `derive` 在类型上实现。这些 trait 不存在有意义的默认行为,所以由你负责以合理的方式实现它们。
+这里列出的 trait 是仅有的在标准库中定义且能通过 `derive` 在类型上实现。标准库中定义的其它 trait 不能通过 `derive` 在类型上实现。这些 trait 不存在有意义的默认行为,所以由你负责以合理的方式实现它们。
 
 一个无法被派生的 trait 的例子是为终端用户处理格式化的 `Display` 。你应该时常考虑使用合适的方法来为终端用户显示一个类型。终端用户应该看到类型的什么部分?他们会找出相关部分吗?对他们来说最相关的数据格式是什么样的?Rust 编译器没有这样的洞察力,因此无法为你提供合适的默认行为。
 
diff --git a/src/appendix-04-useful-development-tools.md b/src/appendix-04-useful-development-tools.md
index 0335f96..68574b0 100644
--- a/src/appendix-04-useful-development-tools.md
+++ b/src/appendix-04-useful-development-tools.md
@@ -1,7 +1,8 @@
 ## 附录 D:实用开发工具
 
-> [appendix-04-useful-development-tools.md](https://github.com/rust-lang/book/blob/main/src/appendix-04-useful-development-tools.md) > <br />
-> commit d48e9884f4e5ecb112095d4e8c55ebc3bce4b009
+> [appendix-04-useful-development-tools.md](https://github.com/rust-lang/book/blob/main/src/appendix-04-useful-development-tools.md)
+> <br />
+> commit efbafdba3618487fbc9305318fcab9775132ac15
 
 本附录,我们将讨论 Rust 项目提供的用于开发 Rust 代码的工具。
 
@@ -27,7 +28,7 @@ $ cargo fmt
 
 ### 通过 `rustfix` 修复代码
 
-如果你编写过 Rust 代码,那么你可能见过编译器警告。例如,考虑如下代码:
+如果你编写过 Rust 代码,那么你可能见过那些有很明显修复方式的编译器警告。例如,考虑如下代码:
 
 <span class="filename">文件名: src/main.rs</span>
 
@@ -49,7 +50,7 @@ $ cargo build
 warning: unused variable: `i`
  --> src/main.rs:4:9
   |
-4 |     for i in 1..100 {
+4 |     for i in 0..100 {
   |         ^ help: consider using `_i` instead
   |
   = note: #[warn(unused_variables)] on by default
@@ -146,11 +147,8 @@ fn main() {
 为了帮助 IDE 集成,Rust 社区建议使用 [`rust-analyzer`][rust-analyzer]。这个工具是一组以编译器为中心的实用程序,它实现了 [Language Server Protocol][lsp](一个 IDE 与编程语言之间的通信规范)。`rust-analyzer` 可以用于不同的客户端,比如 [Visual Studio Code 的 Rust analyzer 插件][vscode]。
 
 [lsp]: http://langserver.org/
-[vscode]: https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer
+[vscode]: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer
 
 访问 `rust-analyzer` 项目的 [主页][rust-analyzer] 来了解如何安装安装它,然后为你的 IDE 安装 language server 支持。如此你的 IDE 便会获得如自动补全、跳转到定义和 inline error 之类的功能。
 
-请查看 [`rust-analyzer` 的文档][rust-analyzer-manual] 来了解更多信息。
-
 [rust-analyzer]: https://rust-analyzer.github.io
-[rust-analyzer-manual]: https://rust-analyzer.github.io/manual.html
diff --git a/src/appendix-05-editions.md b/src/appendix-05-editions.md
index bf18e02..4446a70 100644
--- a/src/appendix-05-editions.md
+++ b/src/appendix-05-editions.md
@@ -1,6 +1,7 @@
 ## 附录 E:版本
 
-> [appendix-05-editions.md](https://github.com/rust-lang/book/blob/main/src/appendix-05-editions.md) > <br />
+> [appendix-05-editions.md](https://github.com/rust-lang/book/blob/main/src/appendix-05-editions.md)
+> <br />
 > commit 8cf0496bb8e56b683ea3f015871c8631684decf4
 
 早在第一章,我们见过 `cargo new` 在 *Cargo.toml* 中增加了一些有关 `edition` 的元数据。本附录将解释其意义!
diff --git a/src/appendix-07-nightly-rust.md b/src/appendix-07-nightly-rust.md
index 2c36c34..d69ef5f 100644
--- a/src/appendix-07-nightly-rust.md
+++ b/src/appendix-07-nightly-rust.md
@@ -1,6 +1,7 @@
 ## 附录 G:Rust 是如何开发的与 “Nightly Rust”
 
-> [appendix-07-nightly-rust.md](https://github.com/rust-lang/book/blob/main/src/appendix-07-nightly-rust.md) > <br />
+> [appendix-07-nightly-rust.md](https://github.com/rust-lang/book/blob/main/src/appendix-07-nightly-rust.md)
+> <br />
 > commit d44317c3122b44fb713aba66cc295dee3453b24b
 
 本附录介绍 Rust 是如何开发的以及这如何影响作为 Rust 开发者的你。