mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-01-15 23:00:10 +08:00
Update Ch10
This commit is contained in:
parent
0f9a9008d1
commit
b96567ccba
@ -1252,7 +1252,7 @@ fn main() {
|
||||
文件名:`src/main.rs`
|
||||
|
||||
```rust
|
||||
fn first_word(s: &String) -> &str {
|
||||
fn first_word(s: &str) -> &str {
|
||||
let bytes = s.as_bytes();
|
||||
|
||||
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 {
|
||||
```
|
||||
|
||||
在编写了许多的 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 明确地应用了这些规则,但仍有着哪些引用有何种生命周期方面的模糊性时,那么编译器是不会就其余引用变量应有何种生命周期,加以猜测的。编译器将给到某个可通过添加生命周期注解,而予以消除的错误消息,而非对模糊的引用生命周期胡乱猜测。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user