为什么是 Rc::downgrade(this: &Self) 而不是 Rc::downgrade(&self)

Phi*_*ger 2 rust

是否有任何特殊原因导致 的 类型签名Rc::downgrade不使用&selfand 作为this: &Self参数?

ing时避免命名污染deref?但为什么Weak然后使用Weak::upgrade(&self)而不是Weak::upgrade(this: &Self)

Sil*_*olo 6

ing时避免命名污染deref

确切地。许多内置容器喜欢RcBox努力减少在其上定义的固有函数的数量,有利于关联函数,而不是让结构尽可能透明。

Weak,另一方面,不实施Deref。您必须有意识地尝试使用 从中获取值,upgrade并且Deref如果指向的值已被删除,则该函数可能会失败(impl 永远不会失败)。