方法接收器

上述的 &self 表示方法會以不可變的方式借用物件。以下是其他可能的方法接收器:

  • &self:使用共用且不可變動的參照,從呼叫端借用物件。之後可以再次使用該物件。
  • &mut self:使用不重複且可變動的參照,從呼叫端借用物件。之後可以再次使用該物件。
  • self:取得物件擁有權,並將其移出呼叫端。方法會成為物件的擁有者。系統會在方法傳回時捨棄物件 (取消分配),但如果其擁有權已明確傳送的情況例外。具備完整擁有權,不自動等同於具備可變動性。
  • mut self:同上,但方法可以變動物件。
  • 沒有接收器:這會成為結構體上的靜態方法,通常用於建立依慣例稱為 new 的建構函式。

除了 self 的變體以外,您還可以使用特殊的包裝函式型別做為接收器型別,例如 Box<Self>

建議您強調「共用且不可變動」,以及「不重複且可變動」這兩個概念。由於借用檢查器規則的關係,這些限制在 Rust 中一律會一起出現,而 self 也不例外。您無法從多個位置參照結構體,並對其呼叫變異 (&mut self) 方法。