Merge pull request #348 from AllanDowney/patch-1

fix(ownership): Bold
pull/351/head
Sunface 3 years ago committed by GitHub
commit 31fa75724f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -188,7 +188,7 @@ error[E0382]: use of moved value: `s1`
> 1. Rust 中每一个值都 `有且只有` 一个所有者(变量) > 1. Rust 中每一个值都 `有且只有` 一个所有者(变量)
> 2. 当所有者(变量)离开作用域范围时,这个值将被丢弃(free) > 2. 当所有者(变量)离开作用域范围时,这个值将被丢弃(free)
如果你在其他语言中听说过术语 **浅拷贝shallow copy**和 **深拷贝deep copy**,那么拷贝指针、长度和容量而不拷贝数据听起来就像浅拷贝,但是又因为 Rust 同时使第一个变量 `s1` 无效了,因此这个操作被称为 **移动move**,而不是浅拷贝。上面的例子可以解读为 `s1` **移动**到了 `s2` 中。那么具体发生了什么,用一张图简单说明: 如果你在其他语言中听说过术语**浅拷贝( shallow copy )**和**深拷贝( deep copy )**,那么拷贝指针、长度和容量而不拷贝数据听起来就像浅拷贝,但是又因为 Rust 同时使第一个变量 `s1` 无效了,因此这个操作被称为**移动move**,而不是浅拷贝。上面的例子可以解读为 `s1` 被**移动**到了 `s2` 中。那么具体发生了什么,用一张图简单说明:
<img alt="s1 moved to s2" src="/img/ownership01.svg" class="center" style="width: 50%;" /> <img alt="s1 moved to s2" src="/img/ownership01.svg" class="center" style="width: 50%;" />

Loading…
Cancel
Save