diff --git a/src/ch01-00-getting-started.md b/src/ch01-00-getting-started.md
index f3d9934..86b2b06 100644
--- a/src/ch01-00-getting-started.md
+++ b/src/ch01-00-getting-started.md
@@ -1,8 +1,7 @@
# 入门指南
-> [ch01-00-getting-started.md](https://github.com/rust-lang/book/blob/main/src/ch01-00-getting-started.md)
->
-> commit 1fedfc4b96c2017f64ecfcf41a0a07e2e815f24f
+
+
让我们开始 Rust 之旅!有很多内容需要学习,但每次旅程总有起点。在本章中,我们会讨论:
diff --git a/src/ch01-01-installation.md b/src/ch01-01-installation.md
index 99d7680..24854ec 100644
--- a/src/ch01-01-installation.md
+++ b/src/ch01-01-installation.md
@@ -1,7 +1,7 @@
## 安装
-> [ch01-01-installation.md](https://github.com/rust-lang/book/blob/main/src/ch01-01-installation.md)
-> commit d5eb2f7a8e9c6f51b4478f9cd46f55448e2ca2c1
+
+
第一步是安装 Rust。我们会通过 `rustup` 下载 Rust,这是一个管理 Rust 版本和相关工具的命令行工具。下载时需要联网。
@@ -11,7 +11,7 @@
> ### 命令行标记
>
-> 本章和全书中,我们会展示一些在终端中使用的命令。所有需要输入到终端的行都以 `$` 开头。你不需要输入`$`字符;这里显示的`$`字符表示命令行提示符,仅用于提示每行命令的起点。不以 `$` 起始的行通常展示前一个命令的输出。另外,PowerShell 专用的示例会采用 `>` 而不是 `$`。
+> 本章和全书中,我们会展示一些在终端中使用的命令。所有需要输入到终端的行都以 `$` 开头。你不需要输入 `$` 字符;这里显示的 `$` 字符表示命令行提示符,仅用于提示每行命令的起点。不以 `$` 起始的行通常展示前一个命令的输出。另外,PowerShell 专用的示例会采用 `>` 而不是 `$`。
### 在 Linux 或 macOS 上安装 `rustup`
@@ -27,7 +27,7 @@ $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
Rust is installed now. Great!
```
-另外,你还需要一个 *链接器(linker)*,这是 Rust 用来将其编译的输出连接到一个文件中的程序。很可能你已经有一个了。如果你遇到了链接器错误,请尝试安装一个 C 编译器,它通常包括一个链接器。C 编译器也很有用,因为一些常见的 Rust 包依赖于 C 代码,因此需要安装一个 C 编译器。
+另外,你还需要一个 *链接器(linker)*,这是 Rust 用来将其编译的输出连接成一个文件中的程序。很可能你已经有一个了。如果你遇到了链接器错误,请尝试安装一个 C 编译器,它通常包括一个链接器。C 编译器也很有用,因为一些常见的 Rust 包依赖于 C 代码,因此需要安装一个 C 编译器。
在 macOS 上,你可以通过运行以下命令获得 C 语言编译器:
@@ -57,11 +57,7 @@ $ rustc --version
rustc x.y.z (abcabcabc yyyy-mm-dd)
```
-如果看到了这样的信息,就说明 Rust 已经安装成功了!
-
-> 译者:恭喜入坑!(此处应该有掌声!)
-
-如果没看到,请按照下面说明的方法检查 Rust 是否在您的 `%PATH%` 系统变量中。
+如果看到了这样的信息,就说明 Rust 已经安装成功了!如果没看到,请按照下面说明的方法检查 Rust 是否在您的 `%PATH%` 系统变量中。
在 Windows CMD 中,请使用命令:
@@ -85,7 +81,7 @@ $ echo $PATH
## 更新与卸载
-通过 `rustup` 安装了 Rust 之后,更新到最新版本就很简单了,只需要在您对应的命令行中运行如下更新脚本:
+通过 `rustup` 安装了 Rust 之后,更新到最新版本就很简单了。只需要在您对应的命令行中运行如下更新脚本:
```console
$ rustup update
@@ -103,7 +99,24 @@ $ rustup self uninstall
任何时候,如果你拿不准标准库中的类型或函数的用途和用法,请查阅应用程序接口(application programming interface,API)文档!
+### 文本编辑器和集成开发环境(Integrated Development Environments, IDE)
+
+本书不会假设你使用何种工具来编写 Rust 代码。几乎任何文本编辑器都可以搞定!然而,很多文本编辑器和集成开发环境(IDE)内置了 Rust 支持。你总是可以在 Rust 官网的[工具页面][tools]找到很多相对流行的编辑器和 IDE 列表。
+
+### 离线使用本书
+
+在很多示例中,我们会使用多于标准库的 Rust 包。为了处理这些示例,要么需要网络连接要么需要提前下载这些依赖。为了提前下载这些依赖,可以运行如下命令。(我们稍后会详细解释 `cargo` 是什么以及这每一个命令在干什么。)
+
+```console
+$ cargo new get-dependencies
+$ cd get-dependencies
+$ cargo add rand@0.8.5 trpl@0.2.0
+```
+
+这会缓存这些包的下载所以之后你不用再下载它们。一旦你运行了这些命令,就可以在本书之后所有的 `cargo` 命令中使用 `--offline` 参数来使用这些缓存的版本而不是尝试使用网络。
+
[otherinstall]: https://forge.rust-lang.org/infra/other-installation-methods.html
[install]: https://www.rust-lang.org/tools/install
[msvc]: https://rust-lang.github.io/rustup/installation/windows-msvc.html
[community]: https://www.rust-lang.org/community
+[tools]: https://www.rust-lang.org/tools
diff --git a/src/ch01-02-hello-world.md b/src/ch01-02-hello-world.md
index baec2d5..77c0654 100644
--- a/src/ch01-02-hello-world.md
+++ b/src/ch01-02-hello-world.md
@@ -1,8 +1,7 @@
## Hello, World!
-> [ch01-02-hello-world.md](https://github.com/rust-lang/book/blob/main/src/ch01-02-hello-world.md)
->
-> commit 1fb74c3f1d8aeba39373e9f4cdb9a4bdca95604f
+
+
既然安装好了 Rust,是时候来编写第一个 Rust 程序了。当学习一门新语言的时候,使用该语言在屏幕上打印 `Hello, world!` 是一项传统,我们将沿用这一传统!
@@ -25,7 +24,7 @@ $ cd hello_world
对于 Windows CMD,输入:
-```doscon
+```cmd
> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
@@ -53,7 +52,7 @@ fn main() {
-保存文件,并回到当前目录为“~/projects/hello_world”的终端窗口。在 Linux 或 macOS 上,输入如下命令,编译并运行文件:
+保存文件,并回到当前目录为 *~/projects/hello_world* 的终端窗口。在 Linux 或 macOS 上,输入如下命令,编译并运行文件:
```console
$ rustc main.rs
@@ -65,7 +64,7 @@ Hello, world!
```powershell
> rustc main.rs
-> .\main.exe
+> .\main
Hello, world!
```
@@ -73,7 +72,7 @@ Hello, world!
如果 `Hello, world!` 出现了,恭喜你!你已经正式编写了一个 Rust 程序。现在你成为一名 Rust 程序员,欢迎!
-### 分析这个 Rust 程序
+### Rust 程序的结构
现在,让我们回过头来仔细看看这个 “Hello, world!” 程序。这是第一块拼图:
@@ -89,19 +88,19 @@ fn main() {
> 注:如果你希望在 Rust 项目中保持一种标准风格,可以使用名为 `rustfmt` 的自动格式化工具将代码格式化为特定的风格(更多内容详见[附录 D][devtools] 中的 `rustfmt`)。Rust 团队已经在标准的 Rust 发行版中包含了这个工具,就像 `rustc` 一样。所以它应该已经安装在你的电脑中了!
-在 `main` 函数中有如下代码:
+在 `main` 函数体中有如下代码:
```rust
- println!("Hello, world!");
+println!("Hello, world!");
```
-这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有四个重要的细节需要注意。首先 Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。
+这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有三个重要的细节需要注意。
-第二,`println!` 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 `println`(没有`!`)。我们将在第二十章详细讨论宏。现在你只需记住,当看到符号 `!` 的时候,就意味着调用的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。
+首先,`println!` 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 `println`(没有`!`)。我们将在[第二十章][ch20-macros]详细讨论宏。现在你只需记住,当看到符号 `!` 的时候,就意味着调用的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。
-第三,`"Hello, world!"` 是一个字符串。我们把这个字符串作为一个参数传递给 `println!`,字符串将被打印到屏幕上。
+第二,`"Hello, world!"` 是一个字符串。我们把这个字符串作为一个参数传递给 `println!`,字符串将被打印到屏幕上。
-第四,该行以分号结尾(`;`),这代表一个表达式的结束和下一个表达式的开始。大部分 Rust 代码行以分号结尾。
+第三,该行以分号结尾(`;`),这代表一个表达式的结束和下一个表达式可以开始。大部分 Rust 代码行以分号结尾。
### 编译和运行是彼此独立的步骤
@@ -122,9 +121,9 @@ $ ls
main main.rs
```
-在 Linux 和 macOS,你会看到两个文件。在 Windows PowerShell 中,你会看到同使用 CMD 相同的三个文件。在 Windows 的 CMD 上,则输入如下内容:
+在 Linux 和 macOS,你会看到两个文件。在 Windows PowerShell 中,你会看到同使用 CMD 相同的三个文件。在 Windows 的 CMD 上,则输入如下命令:
-```doscon
+```cmd
> dir /B %= the /B option says to only show the file names =%
main.exe
main.pdb
@@ -145,3 +144,4 @@ $ ./main # Windows 是 .\main.exe
[troubleshooting]: ch01-01-installation.html#故障排除troubleshooting
[devtools]: appendix-04-useful-development-tools.html
+[ch20-macros]: ch20-05-macros.html