From 3d386890ecf026e35c1ea9fd878f662661ba77b9 Mon Sep 17 00:00:00 2001 From: AuroraTea <1352685369@qq.com> Date: Sat, 25 Jun 2022 16:12:10 +0800 Subject: [PATCH 1/2] fix ch10-03-lifetime-syntax.md possible ambiguity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这里的它虽然结合知识和语境应该能看出来是悬垂引用,但是从汉语语法上来看就像是说生命周期。 --- src/ch10-03-lifetime-syntax.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch10-03-lifetime-syntax.md b/src/ch10-03-lifetime-syntax.md index 0ea52a1..e0c9e21 100644 --- a/src/ch10-03-lifetime-syntax.md +++ b/src/ch10-03-lifetime-syntax.md @@ -10,7 +10,7 @@ ### 生命周期避免了悬垂引用 -生命周期的主要目标是避免悬垂引用,它会导致程序引用了非预期引用的数据。考虑一下示例 10-17 中的程序,它有一个外部作用域和一个内部作用域. +生命周期的主要目标是避免悬垂引用,后者会导致程序引用了非预期引用的数据。考虑一下示例 10-17 中的程序,它有一个外部作用域和一个内部作用域. ```rust,ignore,does_not_compile {{#rustdoc_include ../listings/ch10-generic-types-traits-and-lifetimes/listing-10-17/src/main.rs:here}} From c467aaed5a8a661aa18d21caf2eb7e9e83a349de Mon Sep 17 00:00:00 2001 From: shower Date: Wed, 29 Jun 2022 15:32:56 +0800 Subject: [PATCH 2/2] Update ch13-01-closures.md Calling the closures is required for add_one_v3 and add_one_v4 to be able to compile because the types will be inferred from their usage. --- src/ch13-01-closures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch13-01-closures.md b/src/ch13-01-closures.md index e88c021..255f9b5 100644 --- a/src/ch13-01-closures.md +++ b/src/ch13-01-closures.md @@ -136,7 +136,7 @@ let add_one_v3 = |x| { x + 1 }; let add_one_v4 = |x| x + 1 ; ``` -第一行展示了一个函数定义,而第二行展示了一个完整标注的闭包定义。第三行闭包定义中省略了类型注解,而第四行去掉了可选的大括号,因为闭包体只有一行。这些都是有效的闭包定义,并在调用时产生相同的行为。调用闭包要求 `add_one_v3` 和 `add_one_v4` 必须更够编译因为会根据其用途推断其类型。 +第一行展示了一个函数定义,而第二行展示了一个完整标注的闭包定义。第三行闭包定义中省略了类型注解,而第四行去掉了可选的大括号,因为闭包体只有一行。这些都是有效的闭包定义,并在调用时产生相同的行为。调用闭包是 `add_one_v3` 和 `add_one_v4` 能够编译的必要条件,因为类型将从其用法中推断出来。 闭包定义会为每个参数和返回值推断一个具体类型。例如,示例 13-8 中展示了仅仅将参数作为返回值的简短的闭包定义。除了作为示例的目的这个闭包并不是很实用。注意其定义并没有增加任何类型注解:如果尝试调用闭包两次,第一次使用 `String` 类型作为参数而第二次使用 `u32`,则会得到一个错误: