方法接收器
上述的 &self
表示方法會以不可變的方式借用物件。以下是其他可能的方法接收器:
&self
:使用共用且不可變動的參照,從呼叫端借用物件。之後可以再次使用該物件。&mut self
:使用不重複且可變動的參照,從呼叫端借用物件。之後可以再次使用該物件。self
:取得物件擁有權,並將其移出呼叫端。方法會成為物件的擁有者。系統會在方法傳回時捨棄物件 (取消分配),但如果其擁有權已明確傳送的情況例外。具備完整擁有權,不自動等同於具備可變動性。mut self
:同上,但方法可以變動物件。- 沒有接收器:這會成為結構體上的靜態方法,通常用於建立依慣例稱為
new
的建構函式。
除了 self
的變體以外,您還可以使用特殊的包裝函式型別做為接收器型別,例如 Box<Self>
。
建議您強調「共用且不可變動」,以及「不重複且可變動」這兩個概念。由於借用檢查器規則的關係,這些限制在 Rust 中一律會一起出現,而 self
也不例外。您無法從多個位置參照結構體,並對其呼叫變異 (&mut self
) 方法。