Merge pull request #437 from Nangos/patch-29

Update ch15-04-rc.md
This commit is contained in:
KaiserY 2020-07-12 22:19:50 +08:00 committed by GitHub
commit 94de12f494
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -23,7 +23,7 @@
列表 `a` 包含 5 之后是 10之后是另两个列表`b` 从 3 开始而 `c` 从 4 开始。`b` 和 `c` 会接上包含 5 和 10 的列表 `a`。换句话说,这两个列表会尝试共享第一个列表所包含的 5 和 10。
尝试使用 `Box<T>` 定义的 `List` 实现不能工作,如示例 15-17 所示:
尝试使用 `Box<T>` 定义的 `List` 实现不能工作,如示例 15-17 所示:
<span class="filename">文件名: src/main.rs</span>
@ -61,7 +61,7 @@ error[E0382]: use of moved value: `a`
the `Copy` trait
```
`Cons` 成员拥有其储存的数据,所以当创建 `b` 列表时,`a` 被移动进了 `b` 这样 `b` 就拥有了 `a`。接着当再次尝使用 `a` 创建 `c` 时,这不被允许因为 `a` 的所有权已经被移动。
`Cons` 成员拥有其储存的数据,所以当创建 `b` 列表时,`a` 被移动进了 `b` 这样 `b` 就拥有了 `a`。接着当再次尝使用 `a` 创建 `c` 时,这不被允许因为 `a` 的所有权已经被移动。
可以改变 `Cons` 的定义来存放一个引用,不过接着必须指定生命周期参数。通过指定生命周期参数,表明列表中的每一个元素都至少与列表本身存在的一样久。例如,借用检查器不会允许 `let a = Cons(10, &Nil);` 编译,因为临时值 `Nil` 会在 `a` 获取其引用之前就被丢弃了。