From 17d8cea4970c88081d71b47b0541448bcde8c8e3 Mon Sep 17 00:00:00 2001 From: Unisko PENG Date: Thu, 20 Apr 2023 16:09:06 +0800 Subject: [PATCH] Update Ch10 --- src/Ch10_Generic_Types_Traits_and_Lifetimes.md | 4 ++-- src/Ch21_Appendix.md | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Ch10_Generic_Types_Traits_and_Lifetimes.md b/src/Ch10_Generic_Types_Traits_and_Lifetimes.md index e83b4c7..72951ff 100644 --- a/src/Ch10_Generic_Types_Traits_and_Lifetimes.md +++ b/src/Ch10_Generic_Types_Traits_and_Lifetimes.md @@ -1280,9 +1280,9 @@ fn first_word<'a>(s: &'a str) -> &'a str { 编程到 Rust 的引用分析中的那些确定性模式,被称为 *生命周期省略规则,lifetime elision rules*。这些规则并非 Rust 程序员要遵循的;他们是编译器将考虑的一套特殊情形,并在咱们的代码符合这些情形时,咱们就不需要显式地写出生命周期。 -这些省略规则,并不提供完全的推断。在 Rust 明确地应用了这些规则,但仍有着哪些引用有何种生命周期方面的模糊性时,那么编译器是不会就其余引用变量应有何种生命周期,加以猜测的。编译器将给到某个可通过添加生命周期注解,而予以消除的错误消息,而非对模糊的引用生命周期胡乱猜测。 +这些省略规则并不提供完全的推断。在 Rust 明确地应用了这些规则,但仍存在引用具有什么样的生命周期方面的模糊性时,编译器将不会就其余引用变量应有什么样的生命周期,加以猜测。相比于猜测,编译器将给到咱们,可通过添加生命周期注解而解决的一个报错。 -在函数或方法参数上的生命周期,被称为 *输入生命周期(input lifetimes)*,而在返回值上的生命周期,则被称为 *输出生命周期(output lifetimes)*。 +函数或方法参数上的生命周期,被称为 *输入生命周期,input lifetimes*,而在返回值上的生命周期,则被称为 *输出生命周期,output lifetimes*。 在没有显式的生命周期注解时,编译器会用到三条规则,来计算出那些引用的生命周期。首条规则应用于输入生命周期,而第二及第三条规则,则是都应用于输出生命周期。在编译器抵达这三条规则的结尾处,而仍有其未能计算出生命周期的引用时,那么编译器就会以某个错误消息而停止。这三条规则适用于 `fn` 定义,对于 `impl` 代码块也一样适用。 diff --git a/src/Ch21_Appendix.md b/src/Ch21_Appendix.md index 5a77655..7821925 100644 --- a/src/Ch21_Appendix.md +++ b/src/Ch21_Appendix.md @@ -786,34 +786,52 @@ $ rustup component add llvm-tools-preview ## 附录 I - 术语清单 + - 单态化 所谓 *单态化,monomorphization*,是指即通过把在编译后用到的具体类型填入到泛型位置,而将通用代码转换为具体代码的过程。参考 [使用泛型代码的性能问题](Ch10_Generic_Types_Traits_and_Lifetimes.md#使用泛型参数代码的性能问题)。 + - 内聚属性 a property called *coherence*,参见 [在类型上实现某个特质](Ch10_Generic_Types_Traits_and_Lifetimes.md#在类型上实现某个特质)。 + - 孤儿规则 the orphan rule, 参见 [在类型上实现某个特质](Ch10_Generic_Types_Traits_and_Lifetimes.md#在类型上实现某个特质)。 + - `impl Trait` 语法 `impl Trait` syntax, 在函数参数清单中,将特质用作参数类型注解的语法。参见:[作为参数的特质](Ch10_Generic_Types_Traits_and_Lifetimes.md#作为参数的特质) + - 特质边界语法 Trait bound syntax, 参见 [特质边界语法](Ch10_Generic_Types_Traits_and_Lifetimes.md#特质边界语法) + - 语法糖 Sugar syntax, 参见 [特质边界语法](Ch10_Generic_Types_Traits_and_Lifetimes.md#特质边界语法) + - 指明多个特质边界的 `+` 语法 The `+` syntax for specifying multiple trait bounds, 参见:[使用 + 语法,指定多个特质边界](Ch10_Generic_Types_Traits_and_Lifetimes.md#使用--语法指定多个特质边界) + - `where` 子句 `where` clauses, 参见 []() + + +- 输入生命周期 + +input lifetimes,函数或方法上的生命周期 + + +- 输出生命周期 + +output lifetimes, 返回值上的生命周期