2017-12-27 122 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

我錯過了同一頁上的官方文檔......我一定很糟糕。我會自我冷落:) –

相關問題