2017-12-27 90 views

回答

5

这是为了防止阴影的方法,否则将通过RcDerefDerefMut实现可见。引述documentation of Rc:中Rc

固有的方法是所有相关的功能,这意味着你要叫他们为例如Rc::get_mut(&mut value)而不是value.get_mut()。这避免了与内部类型T的方法冲突。

举例来说,如果你有Rc<Foo>其中Foo定义了自己的方法称为weak_count,采用静态方法将允许用户编写foo.weak_count(…)调用Foo::weak_countRc::weak_count(&foo)调用Rc::weak_count。 (由于这个原因,在定义了Deref/DerefMut的类型中增加一个固有方法将打破向后兼容性)。

+0

我错过了同一页上的官方文档......我一定很糟糕。我会自我冷落:) –

相关问题