diff --git a/src/ch02-00-guessing-game-tutorial.md b/src/ch02-00-guessing-game-tutorial.md index f5f5b9e..44ea379 100644 --- a/src/ch02-00-guessing-game-tutorial.md +++ b/src/ch02-00-guessing-game-tutorial.md @@ -166,7 +166,7 @@ io::stdin().read_line(&mut guess) ### 使用 `Result` 类型来处理潜在的错误 -我们还没有完全分析完这行代码。虽然这是单独一行代码,但它是一个逻辑行(虽然换行了但仍是一个语句)的第一部分。第二部分是这个方法: +我们还没有完全分析完这行代码。虽然这是单独一行代码,但它是逻辑行(虽然换行了但仍是语句)的一部分。后一部分是这个方法: ```rust,ignore .expect("Failed to read line"); diff --git a/src/ch04-03-slices.md b/src/ch04-03-slices.md index 0f66a59..3d4064d 100644 --- a/src/ch04-03-slices.md +++ b/src/ch04-03-slices.md @@ -222,7 +222,7 @@ error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immuta #### 字符串字面值就是 slice -还记得我们讲到过字符串字面值被储存在二进制文件中吗。现在知道 slice 了,我们就可以正确的理解字符串字面值了: +还记得我们讲到过字符串字面值被储存在二进制文件中吗?现在知道 slice 了,我们就可以正确地理解字符串字面值了: ```rust let s = "Hello, world!"; diff --git a/src/ch11-03-test-organization.md b/src/ch11-03-test-organization.md index 364006b..dc4b3b1 100644 --- a/src/ch11-03-test-organization.md +++ b/src/ch11-03-test-organization.md @@ -16,7 +16,7 @@ 测试模块的 `#[cfg(test)]` 注解告诉 Rust 只在执行 `cargo test` 时才编译和运行测试代码,而在运行 `cargo build` 时不这么做。这在只希望构建库的时候可以节省编译时间,并且因为它们并没有包含测试,所以能减少编译产生的文件的大小。与之对应的集成测试因为位于另一个文件夹,所以它们并不需要 `#[cfg(test)]` 注解。然而单元测试位于与源码相同的文件中,所以你需要使用 `#[cfg(test)]` 来指定他们不应该被包含进编译结果中。 -回忆本章第一部分新建的 `adder` 项目吗,Cargo 为我们生成了如下代码: +回忆本章第一部分新建的 `adder` 项目,Cargo 为我们生成了如下代码: 文件名: src/lib.rs diff --git a/src/ch13-03-improving-our-io-project.md b/src/ch13-03-improving-our-io-project.md index 7c4545c..8f8aa37 100644 --- a/src/ch13-03-improving-our-io-project.md +++ b/src/ch13-03-improving-our-io-project.md @@ -89,7 +89,7 @@ impl Config { 示例 13-26:以迭代器作为参数更新 `Config::new` 的签名 -`env::args` 函数的标准库文档显示,它返回的迭代器的类型为 `std::env::Args`。我们已经更新了 `Config :: new` 函数的签名,因此参数 `args` 的类型为 `std::env::Args` 而不是 `&[String]`。因为我们拥有 `args` 的所有权,并且将通过对其进行迭代来改变 `args` ,所以我们可以将 `mut` 关键字添加到 `args` 参数的规范中以使其可变。 +`env::args` 函数的标准库文档显示,它返回的迭代器的类型为 `std::env::Args`。我们已经更新了 `Config :: new` 函数的签名,因此参数 `args` 的类型为 `std::env::Args` 而不是 `&[String]`。因为我们拥有 `args` 的所有权,并且将通过对其进行迭代来改变 `args` ,所以我们可以将 `mut` 关键字添加到 `args` 参数的规范中以使其可变。 #### 使用 `Iterator` trait 代替索引 diff --git a/src/ch14-02-publishing-to-crates-io.md b/src/ch14-02-publishing-to-crates-io.md index c710388..0f58116 100644 --- a/src/ch14-02-publishing-to-crates-io.md +++ b/src/ch14-02-publishing-to-crates-io.md @@ -16,7 +16,7 @@ Rust 和 Cargo 有一些帮助它人更方便找到和使用你发布的包的 文件名: src/lib.rs ````rust,ignore -/// 将给定的数字加一 +/// Adds one to the number given. /// /// # Examples /// @@ -77,10 +77,10 @@ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ```rust,ignore //! # My Crate //! -//! `my_crate` 是一个使得特定计算更方便的 -//! 工具集合 +//! `my_crate` is a collection of utilities to make performing certain +//! calculations more convenient. -/// 将给定的数字加一。 +/// Adds one to the number given. // --snip-- ``` diff --git a/src/ch14-03-cargo-workspaces.md b/src/ch14-03-cargo-workspaces.md index 2f7fb2e..f20b3e7 100644 --- a/src/ch14-03-cargo-workspaces.md +++ b/src/ch14-03-cargo-workspaces.md @@ -15,7 +15,7 @@ $ mkdir add $ cd add ``` -接着在 add* 目录中,创建 *Cargo.toml* 文件。这个 *Cargo.toml* 文件配置了整个工作空间。它不会包含 `[package]` 或其他我们在 *Cargo.toml* 中见过的元信息。相反,它以 `[workspace]` 部分作为开始,并通过指定 *adder* 的路径来为工作空间增加成员,如下会加入二进制 crate: +接着在 *add* 目录中,创建 *Cargo.toml* 文件。这个 *Cargo.toml* 文件配置了整个工作空间。它不会包含 `[package]` 或其他我们在 *Cargo.toml* 中见过的元信息。相反,它以 `[workspace]` 部分作为开始,并通过指定 *adder* 的路径来为工作空间增加成员,如下会加入二进制 crate: 文件名: Cargo.toml diff --git a/src/ch19-01-unsafe-rust.md b/src/ch19-01-unsafe-rust.md index 11a04b3..c3138c2 100644 --- a/src/ch19-01-unsafe-rust.md +++ b/src/ch19-01-unsafe-rust.md @@ -32,7 +32,7 @@ ### 解引用裸指针 -回到第四章的 [“悬垂引用”][dangling-references] 部分,那里提到了编译器会确保引用总是有效的。不安全 Rust 有两个被称为 **裸指针**(*raw pointers*)的类似于引用的新类型。和引用一样,裸指针是可变或不可变的,分别写作 `*const T` 和 `*mut T`。这里的星号不是解引用运算符;它是类型名称的一部分。在裸指针的上下文中,**不可变** 意味着指针解引用之后不能直接赋值。 +回到第四章的 [“悬垂引用”][dangling-references] 部分,那里提到了编译器会确保引用总是有效的。不安全 Rust 有两个被称为 **裸指针**(*raw pointers*)的类似于引用的新类型。和引用一样,裸指针是不可变或可变的,分别写作 `*const T` 和 `*mut T`。这里的星号不是解引用运算符;它是类型名称的一部分。在裸指针的上下文中,**不可变** 意味着指针解引用之后不能直接赋值。 与引用和智能指针的区别在于,记住裸指针