Update Ch10

This commit is contained in:
Unisko PENG 2023-04-20 16:09:06 +08:00
parent b96567ccba
commit 17d8cea497
2 changed files with 20 additions and 2 deletions

View File

@ -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` 代码块也一样适用。

View File

@ -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, 返回值上的生命周期