Update Ch10

This commit is contained in:
Unisko PENG 2023-04-17 17:39:13 +08:00
parent c14852610b
commit 55693909d3

View File

@ -914,7 +914,7 @@ error: could not compile `lifetimes_demo` due to previous error
### 借用检查器
Rust 编译器有个对作用域加以比较,而确定出全部借用是否有效的 *借用检查器a borrow checker*。下面清单 10-17 就给出了与清单 10-16 同样的代码,不过有着显示其中变量生命周期的注解
Rust 编译器有着对作用域加以比较,而确定出全部借用是否有效的 *借用检查器a borrow checker*。下面清单 10-17 给出了与清单 10-16 相同,而带有展示出变量生命周期注解的代码
```rust
fn main() {
@ -931,7 +931,7 @@ fn main() {
*清单 10-17变量 `r``x` 生命周期的注解,各自取名为 `'a``'b`*
这里已使用 `'a``'b` 分别注解了变量 `r``x` 的生命周期。如同这里所看到的,内层的 `'b` 代码块,相比外层的 `'a` 声明周期代码块要小得多。在编译时Rust 就会比较这两个生命周期的大小,并发现变量 `r` 有着 `'a` 的生命周期,但他却指向了`'b` 的生命周期。由于生命周期 `'b``'a` 要短,于是该程序就被拒绝:引用物the subject of the reference未与引用变量存活同样时间。
这里,咱们以 `'a` 注解出了 `r` 的声明周期,与 `'b` 注解出 `x` 的生命周期。正如咱们所能看到的,相比外层 `'a` 声明周期代码块,那个内层 `'b` 代码块要小得多。在编译时Rust 会比较这两个生命周期的大小,而发现变量 `r` 有着 `'a` 的生命周期,但他却指向了个 `'b` 的生命周期。由于生命周期 `'b``'a` 要短,于是该程序就被拒绝:引用物the subject of the reference未与引用变量存活同样时间。
下面清单 10-18 修复了该代码,因此他就没有悬空引用,进而就无误地编译了。