From 27ce77c7f49e99d2ca5ee374868a8c6c3aa2a71a Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Wed, 1 Nov 2017 22:47:26 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=B0=91=E4=BA=86=E4=B8=80=E5=8D=8A*?= =?UTF-8?q?=EF=BC=8C=E6=96=9C=E4=BD=93=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch06-02-match.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch06-02-match.md b/src/ch06-02-match.md index 8829f45..f394cba 100644 --- a/src/ch06-02-match.md +++ b/src/ch06-02-match.md @@ -192,7 +192,7 @@ error[E0004]: non-exhaustive patterns: `None` not covered ``` -Rust 知道我们没有覆盖所有可能的情况甚至知道那些模式被忘记了!Rust 中的匹配是 **穷尽的**(*exhaustive):必须穷举到最后的可能性来使代码有效。特别的在这个 `Option` 的例子中,Rust 防止我们忘记明确的处理 `None` 的情况,这使我们免于假设拥有一个实际上为空的值,这造成了之前提到过的价值亿万的错误。 +Rust 知道我们没有覆盖所有可能的情况甚至知道那些模式被忘记了!Rust 中的匹配是 **穷尽的**(*exhaustive*):必须穷举到最后的可能性来使代码有效。特别的在这个 `Option` 的例子中,Rust 防止我们忘记明确的处理 `None` 的情况,这使我们免于假设拥有一个实际上为空的值,这造成了之前提到过的价值亿万的错误。 ### `_` 通配符 From 7a0df0a866b8edcb0bfe499055a2ae38803f3039 Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Tue, 7 Nov 2017 22:25:54 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=8E=9F=E6=96=87=E2=80=9C=E7=BB=87?= =?UTF-8?q?=E2=80=9D=E4=BC=BC=E4=B9=8E=E7=AC=94=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch07-01-mod-and-the-filesystem.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch07-01-mod-and-the-filesystem.md b/src/ch07-01-mod-and-the-filesystem.md index a77364a..8712573 100644 --- a/src/ch07-01-mod-and-the-filesystem.md +++ b/src/ch07-01-mod-and-the-filesystem.md @@ -30,7 +30,7 @@ Cargo 创建了一个空的测试来帮助我们开始库项目,不像使用 ` 因为没有 *src/main.rs* 文件,所以没有可供 Cargo 的 `cargo run` 执行的东西。因此,我们将使用 `cargo build` 命令只是编译库 crate 的代码。 -我们将学习根据编写代码的意图来选择不同的织库项目代码组织来适应多种场景。 +我们将学习根据编写代码的意图来以不同方法组织库项目代码以适应多种情况。 ### 模块定义 From 2ef71531e3c566e5ad3de80069a8633a75e12726 Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Sat, 11 Nov 2017 13:04:53 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=80=97=E5=8F=B7?= =?UTF-8?q?=E6=96=AD=E5=8F=A5=E6=9B=B4=E5=AE=B9=E6=98=93=E7=90=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch08-01-vectors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch08-01-vectors.md b/src/ch08-01-vectors.md index 503a786..8c3f504 100644 --- a/src/ch08-01-vectors.md +++ b/src/ch08-01-vectors.md @@ -52,7 +52,7 @@ v.push(8); } // <- v goes out of scope and is freed here ``` -当 vector 被丢弃时,所有其内容也会被丢弃,这意味着这里它包含的整数将被清理。这可能看起来非常直观,不过一旦开始使用 vector 元素的引用情况就变得有些复杂了。下面让我们处理这种情况! +当 vector 被丢弃时,所有其内容也会被丢弃,这意味着这里它包含的整数将被清理。这可能看起来非常直观,不过一旦开始使用 vector 元素的引用,情况就变得有些复杂了。下面让我们处理这种情况! ### 读取 vector 的元素 From b7d818e134deeb5b042fdaea48dcbc61037ad0df Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Sat, 11 Nov 2017 13:05:14 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch08-01-vectors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch08-01-vectors.md b/src/ch08-01-vectors.md index 8c3f504..488c0eb 100644 --- a/src/ch08-01-vectors.md +++ b/src/ch08-01-vectors.md @@ -109,7 +109,7 @@ immutable | - immutable borrow ends here ``` -这些代码看起来应该能够运行:为什么第一个元素的引用会关心 vector 结尾的变化?不能这么做的原因是由于 vector 的工作方式。在 vector 的结尾增加新元素是,在没有足够空间将所有所有元素依次相邻存放的情况下,可能会要求分配新内存并将老的元素拷贝到新的空间中。这时,第一个元素的引用就指向了被释放的内存。借用规则阻止程序陷入这种状况。 +这些代码看起来应该能够运行:为什么第一个元素的引用会关心 vector 结尾的变化?不能这么做的原因是由于 vector 的工作方式。在 vector 的结尾增加新元素时,在没有足够空间将所有所有元素依次相邻存放的情况下,可能会要求分配新内存并将老的元素拷贝到新的空间中。这时,第一个元素的引用就指向了被释放的内存。借用规则阻止程序陷入这种状况。 > 注意:关于更多内容,查看 Nomicon *https://doc.rust-lang.org/stable/nomicon/vec.html* From 1ea816f83dd5a1dfd0b0b2618c336e6541e21338 Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Sat, 11 Nov 2017 18:02:02 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=8E=9F=E8=AF=91=E6=96=87=E4=B8=8D?= =?UTF-8?q?=E5=A4=9F=E9=80=9A=E9=A1=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch08-02-strings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch08-02-strings.md b/src/ch08-02-strings.md index cd2e99a..9de5b41 100644 --- a/src/ch08-02-strings.md +++ b/src/ch08-02-strings.md @@ -76,7 +76,7 @@ let mut s = String::from("foo"); s.push_str("bar"); ``` -执行这两行代码之后 `s` 将会包含 “foobar”。`push_str` 方法获取字符串 slice,因为并不需要获取参数的所有权。例如,如果将 `s2` 的内容附加到 `s1` 中后自身不能被使用就糟糕了: +执行这两行代码之后 `s` 将会包含 “foobar”。`push_str` 方法获取字符串 slice,因为我们并不需要获取参数的所有权。例如,如果将 `s2` 的内容附加到 `s1` 中后自身不能被使用就糟糕了: ```rust let mut s1 = String::from("foo"); From 36cd6ff06ef27628629f2bbb934e5e416e53311f Mon Sep 17 00:00:00 2001 From: bioinformatist Date: Thu, 16 Nov 2017 20:07:26 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch09-00-error-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch09-00-error-handling.md b/src/ch09-00-error-handling.md index ad93fad..609d6ee 100644 --- a/src/ch09-00-error-handling.md +++ b/src/ch09-00-error-handling.md @@ -4,7 +4,7 @@ >
> commit 4f2dc564851dc04b271a2260c834643dfd86c724 -Rust 对可靠性的执着也扩展到了错误处理。错误对于软件来说是不可避免的,所以 Rust 有很多功能来处理当现错误的情况。在很多情况下,Rust 要求你承认出错的可能性并在编译代码之前就采取行动。通过确保不会只有在将代码部署到生产环境之后才会发现错误来使得程序更可靠。 +Rust 对可靠性的执着也扩展到了错误处理。错误对于软件来说是不可避免的,所以当出现错误时, Rust 有很多特性来处理当前情况。在很多情况下,Rust 要求你承认出错的可能性并在编译代码之前就采取行动。通过确保不会只有在将代码部署到生产环境之后才会发现错误来使得程序更可靠。 Rust 将错误组合成两个主要类别:**可恢复错误**(*recoverable*)和 **不可恢复错误**(*unrecoverable*)。可恢复错误通常代表向用户报告错误和重试操作是合理的情况,比如未找到文件。不可恢复错误通常是 bug 的同义词,比如尝试访问超过数组结尾的位置。