mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-01-30 06:00:13 +08:00
Update Ch10
This commit is contained in:
parent
c14852610b
commit
55693909d3
@ -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 修复了该代码,因此他就没有悬空引用,进而就无误地编译了。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user