Update Ch10

This commit is contained in:
Unisko PENG 2023-04-20 15:58:03 +08:00
parent 0f9a9008d1
commit b96567ccba

View File

@ -1252,7 +1252,7 @@ fn main() {
文件名:`src/main.rs` 文件名:`src/main.rs`
```rust ```rust
fn first_word(s: &String) -> &str { fn first_word(s: &str) -> &str {
let bytes = s.as_bytes(); let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() { for (i, &item) in bytes.iter().enumerate() {
@ -1274,11 +1274,11 @@ fn first_word(s: &String) -> &str {
fn first_word<'a>(s: &'a str) -> &'a str { fn first_word<'a>(s: &'a str) -> &'a str {
``` ```
在编写了许多的 Rust 代码之Rust 团队发现Rust 程序员们在某些特定情形下,会一次又一次地敲入许多同样的生命周期注解。而这些特定情形,是可被预测的,并遵循了少数几种确定性的模式a few deterministic patterns。Rust 开发者们于是就将这些模式,编程进了编译器的代码,于是借用检查器就可以推断出这些情形下的生命周期,而无需显式的注解 在编写出许多 Rust 代码Rust 团队发现Rust 程序员们在某些特定情形下,会一次又一次地敲入许多同样的生命周期注解。而这些特定情形,是可被预测的,并遵循了少数几种确定性模式a few deterministic patterns。Rust 开发者们便把这些模式,编程进了编译器的代码,于是借用检查器就可以推断出这些情形下的生命周期,而无需显式的注解。
由于将来可能合并更多确定性的模式,并将这些模式添加到编译器,因此 Rust 的这段历史是有联系的。在将来,或许就只要求更少甚至没有生命周期注解 由于存在合并更多确定性模式,并将他们到编译器的可能,因此讲 Rust 的这段历史是有必要的。今后,或许就只要求更少甚至没有生命周期注解。
编程到 Rust 的引用分析中的那些确定性模式,被称为 *生命周期省略规则lifetime elision rules*。这些规则并非 Rust 程序员要遵循的规则;他们是一套编译器要考虑的特殊情形,并在咱们编写的代码符合这些情形时,就无需显式地写出生命周期(注解) 编程到 Rust 的引用分析中的那些确定性模式,被称为 *生命周期省略规则lifetime elision rules*。这些规则并非 Rust 程序员要遵循的;他们是编译器将考虑的一套特殊情形,并在咱们的代码符合这些情形时,咱们就不需要显式地写出生命周期
这些省略规则,并不提供完全的推断。在 Rust 明确地应用了这些规则,但仍有着哪些引用有何种生命周期方面的模糊性时,那么编译器是不会就其余引用变量应有何种生命周期,加以猜测的。编译器将给到某个可通过添加生命周期注解,而予以消除的错误消息,而非对模糊的引用生命周期胡乱猜测。 这些省略规则,并不提供完全的推断。在 Rust 明确地应用了这些规则,但仍有着哪些引用有何种生命周期方面的模糊性时,那么编译器是不会就其余引用变量应有何种生命周期,加以猜测的。编译器将给到某个可通过添加生命周期注解,而予以消除的错误消息,而非对模糊的引用生命周期胡乱猜测。