|
|
|
@ -100,7 +100,7 @@ fatal runtime error: stack overflow
|
|
|
|
|
那么问题来了? 如果我们确实需要实现上面的功能,该怎么办?答案是使用`Weak`。
|
|
|
|
|
|
|
|
|
|
## Weak
|
|
|
|
|
`Weak` 非常类似于 `Rc`,但是与 `Rc` 持有所有权不同,`Weak` 不持有所有权,它仅仅保存一份指向数据的弱引用:如果你想要访问数据,需要通过 `Weak` 指针的 `upgrade` 方法实现,该方法返回一个类型为 `Option><Rc<T>>` 的值。
|
|
|
|
|
`Weak` 非常类似于 `Rc`,但是与 `Rc` 持有所有权不同,`Weak` 不持有所有权,它仅仅保存一份指向数据的弱引用:如果你想要访问数据,需要通过 `Weak` 指针的 `upgrade` 方法实现,该方法返回一个类型为 `Option<Rc<T>>` 的值。
|
|
|
|
|
|
|
|
|
|
看到这个返回,相信大家就懂了:何为弱引用?就是**不保证引用关系依然存在**,如果不存在,就返回一个 `None`!
|
|
|
|
|
|
|
|
|
|