mirror of
https://github.com/RustyCab/LearnRustEasy.git
synced 2026-02-03 18:23:31 +08:00
Update chapter_3_16_7.md
This commit is contained in:
@@ -74,4 +74,14 @@ fn main() {
|
||||
## 2. 使用弱引用Weak
|
||||
Weak类似于Rc,但它不持有所有权,它仅仅保存一份指向数据的弱引用。弱引用,就是不保证引用的对象存在,如果不存在,就返回一个 None。
|
||||
下面为Weak和Rc的对比:
|
||||
| Weak | Rc |
|
||||
| ------------------------ | ------------------------ |
|
||||
| 引用不计数 | 引用计数 |
|
||||
| 不拥有所有权 | 拥有所有权 |
|
||||
| 不阻止值被释放 | 阻止值被释放 |
|
||||
|引用的值存在返回Some,不存在返回None | 引用的值必定存在 |
|
||||
|通过upgrade取到Option<Rc<T>>,然后取值|通过Deref自动解引用,取值无需任何操作|
|
||||
|
||||
|
||||
对于上一节中循环链表的例子,使用Weak实现为如下:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user