From 75ac006d0a0ca472cbe2c7c890e116b0322c742f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:36:38 +0800
Subject: [PATCH 1/8] Adjust the word order.
---
src/cargo/guide/why-exist.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cargo/guide/why-exist.md b/src/cargo/guide/why-exist.md
index fcb052f82b..68a6ff3945 100644
--- a/src/cargo/guide/why-exist.md
+++ b/src/cargo/guide/why-exist.md
@@ -27,7 +27,7 @@ Hello, world!
总之,`Cargo` 为了实现目标,做了四件事:
-- 引入两个元数据文件,包含项目的方方面面信息: `Cargo.toml` 和 `Cargo.lock`
+- 引入两个元数据文件,包含项目方方面面的信息: `Cargo.toml` 和 `Cargo.lock`
- 获取和构建项目的依赖,例如 `Cargo.toml` 中的依赖包版本描述,以及从 `crates.io` 下载包
- 调用 `rustc` (或其它编译器) 并使用的正确的参数来构建项目,例如 `cargo build`
- 引入一些惯例,让项目的使用更加简单
From a8b44f5052b79054ba7d0ccf0f3e57f5eff622d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:43:20 +0800
Subject: [PATCH 2/8] Remove unnecessary words.
---
src/cargo/guide/why-exist.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cargo/guide/why-exist.md b/src/cargo/guide/why-exist.md
index 68a6ff3945..1d6949a66e 100644
--- a/src/cargo/guide/why-exist.md
+++ b/src/cargo/guide/why-exist.md
@@ -29,7 +29,7 @@ Hello, world!
- 引入两个元数据文件,包含项目方方面面的信息: `Cargo.toml` 和 `Cargo.lock`
- 获取和构建项目的依赖,例如 `Cargo.toml` 中的依赖包版本描述,以及从 `crates.io` 下载包
-- 调用 `rustc` (或其它编译器) 并使用的正确的参数来构建项目,例如 `cargo build`
+- 调用 `rustc` (或其它编译器) 并使用正确的参数来构建项目,例如 `cargo build`
- 引入一些惯例,让项目的使用更加简单
毫不夸张的说,得益于 `Cargo` 的标准化,只要你使用它构建过一个项目,那构建其它使用 `Cargo` 的项目,也将不存在任何困难。
From 221a20241710922f2bc62a9d9b177740fb2d529b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:44:48 +0800
Subject: [PATCH 3/8] Remove unnecessary words.
---
src/logs/about-log.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/logs/about-log.md b/src/logs/about-log.md
index f43b3057dc..318670d380 100644
--- a/src/logs/about-log.md
+++ b/src/logs/about-log.md
@@ -30,7 +30,7 @@
#### 输出位置
通常来说,日志可以输出两个地方:终端控制台和文件。对于前者,我们还有一个称呼标准输出,例如使用 `println!` 打印到终端的信息就是输出到标准输出中。
-如果没有日志持久化的需求,你只是为了调试程序,建议输出到控制台即可。悄悄的说一句,我们还可以为不同的级别设定不同的输出位置,例如 `Debug` 日志输出到控制台,既方便开发查看,但又不会占用硬盘,而 `Info` 和 `Warning` 日志可以输出到文件 `info.log` 中,至于 `Error`、`Fatal` 则可以输出到 `error.log` 中。
+如果没有日志持久化的需求,你只是为了调试程序,建议输出到控制台即可。悄悄的说一句,我们还可以为不同的级别设定不同的输出位置,例如 `Debug` 日志输出到控制台,既方便开发查看,又不会占用硬盘,而 `Info` 和 `Warning` 日志可以输出到文件 `info.log` 中,至于 `Error`、`Fatal` 则可以输出到 `error.log` 中。
但是如果大家以为只有输出到文件才能持久化日志,那你就错了,在后面的日志采集我们会详细介绍,先来看看日志查看。
From a65c84e915699e178b436a2b2fa645d28f9e083b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:47:02 +0800
Subject: [PATCH 4/8] Fix the typos.
---
assets/writing-material/style_guide/naming.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/writing-material/style_guide/naming.md b/assets/writing-material/style_guide/naming.md
index de82c73915..ec33d5ae83 100644
--- a/assets/writing-material/style_guide/naming.md
+++ b/assets/writing-material/style_guide/naming.md
@@ -227,4 +227,4 @@ std = []
它们都使用了`谓语-宾语-错误`的词序,如果我们想要表达一个网络地址无法分析的错误,由于词序一致性的原则,命名应该如下`ParseAddrError`,而不是`AddrParseError`。
-词序和个人习惯有很大关系,想要注意的是,你可以选择合适的词序,但是要在包的范畴内保持一致性,就如标准库中的包一样。
+词序和个人习惯有很大关系,需要注意的是,你可以选择合适的词序,但是要在包的范畴内保持一致性,就如标准库中的包一样。
From 7e60d5b22649095e75e29b9a4d5378c8f316709d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:48:59 +0800
Subject: [PATCH 5/8] Remove the extra words.
---
src/too-many-lists/do-we-need-it.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/too-many-lists/do-we-need-it.md b/src/too-many-lists/do-we-need-it.md
index 700ddfea47..e171871b1c 100644
--- a/src/too-many-lists/do-we-need-it.md
+++ b/src/too-many-lists/do-we-need-it.md
@@ -22,7 +22,7 @@ $ cargo new --lib lists
$ cd lists
```
-之后,我们会将每个一个链表放入单独的文件中,需要注意的是我们会尽量模拟真实的 Rust 开发场景:你写了一段代码,然后编译器开始跳出试图教你做事,只有这样才能真正学会 Rust,温室环境是无法培养出强大的 Rustacean 的。
+之后,我们会将每一个链表放入单独的文件中,需要注意的是我们会尽量模拟真实的 Rust 开发场景:你写了一段代码,然后编译器开始跳出试图教你做事,只有这样才能真正学会 Rust,温室环境是无法培养出强大的 Rustacean 的。
#### 义务告知
首先,本书不是保姆式教程,而且我个人认为编程应该是快乐,这种快乐往往需要你自己发现而不是别人的事无巨细的讲解。
From 7ec84dd671c4593ae6b0187e42b21a26ee8fb7df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:49:53 +0800
Subject: [PATCH 6/8] Remove the extra words.
---
src/too-many-lists/bad-stack/final-code.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/too-many-lists/bad-stack/final-code.md b/src/too-many-lists/bad-stack/final-code.md
index 442279c88a..f9bb1670c2 100644
--- a/src/too-many-lists/bad-stack/final-code.md
+++ b/src/too-many-lists/bad-stack/final-code.md
@@ -171,7 +171,7 @@ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured
点击这里展开答案
-`self.pop()` 的会返回 `Option`, 而我们之前的实现仅仅对智能指针 `Box` 进行操作。前者会对值进行拷贝,而后者仅仅使用的是指针类型。
+`self.pop()` 会返回 `Option`, 而我们之前的实现仅仅对智能指针 `Box` 进行操作。前者会对值进行拷贝,而后者仅仅使用的是指针类型。
当链表中包含的值是其他较大的类型时,那这个拷贝的开销将变得非常高昂。
From 3e6f2883eb1d9a94c26b0b9834fb36030a886ac6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:52:15 +0800
Subject: [PATCH 7/8] Fix the typos.
---
src/advance/concurrency-with-threads/sync1.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/advance/concurrency-with-threads/sync1.md b/src/advance/concurrency-with-threads/sync1.md
index f94f4109ef..62c35edebe 100644
--- a/src/advance/concurrency-with-threads/sync1.md
+++ b/src/advance/concurrency-with-threads/sync1.md
@@ -204,7 +204,7 @@ Result: 10
正因为这种困难性,导致很多用户都热衷于使用消息传递的方式来实现同步,例如 Go 语言直接把`channel`内置在语言特性中,甚至还有无锁的语言,例如`erlang`,完全使用`Actor`模型,依赖消息传递来完成共享和同步。幸好 Rust 的类型系统、所有权机制、智能指针等可以很好的帮助我们减轻使用锁时的负担。
-另一个值的注意的是在使用`Mutex`时,Rust 无法帮我们避免所有的逻辑错误,例如在之前章节,我们提到过使用`Rc`可能会导致[循环引用的问题](https://course.rs/advance/circle-self-ref/circle-reference.html)。类似的,`Mutex`也存在使用上的风险,例如创建死锁(deadlock):当一个操作试图锁住两个资源,然后两个线程各自获取其中一个锁,并试图获取另一个锁时,就会造成死锁。
+另一个值得注意的是在使用`Mutex`时,Rust 无法帮我们避免所有的逻辑错误,例如在之前章节,我们提到过使用`Rc`可能会导致[循环引用的问题](https://course.rs/advance/circle-self-ref/circle-reference.html)。类似的,`Mutex`也存在使用上的风险,例如创建死锁(deadlock):当一个操作试图锁住两个资源,然后两个线程各自获取其中一个锁,并试图获取另一个锁时,就会造成死锁。
## 死锁
From d5eedb008afdc34eaf0d957b23212e4902ae4076 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BB=E8=AF=AD?= <2806397186@qq.com>
Date: Fri, 31 Oct 2025 21:53:49 +0800
Subject: [PATCH 8/8] Remove the extra words.
---
src/advance/macro.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/advance/macro.md b/src/advance/macro.md
index f4713bc356..c6df71baca 100644
--- a/src/advance/macro.md
+++ b/src/advance/macro.md
@@ -1,6 +1,6 @@
# Macro 宏编程
-在编程世界可以说是谈“宏”色变,原因在于 C 语言中的宏是非常危险的东东,但并不是所有语言都像 C 这样,例如对于古老的语言 Lisp 来说,宏就是就是一个非常强大的好帮手。
+在编程世界可以说是谈“宏”色变,原因在于 C 语言中的宏是非常危险的东东,但并不是所有语言都像 C 这样,例如对于古老的语言 Lisp 来说,宏就是一个非常强大的好帮手。
那话说回来,在 Rust 中宏到底是好是坏呢?本章将带你揭开它的神秘面纱。