Rust 中 self, &self, &mut self 的区别是什么?

· 约 3 分钟读完 · 第 61 / 179 章

推荐答案

在 Rust 中,self、&self 和 &mut self 是方法签名中用于表示方法接收者的不同形式。它们的区别如下:

  • self:表示方法获取了对象的所有权。调用该方法后,对象将被移动,调用者将无法再使用该对象。
  • &self:表示方法以不可变引用的方式借用对象。调用该方法后,对象仍然可用,但只能以只读方式访问。
  • &mut self:表示方法以可变引用的方式借用对象。调用该方法后,对象仍然可用,并且可以对其进行修改。

本题详细解读

self

当方法签名中使用 self 时,表示该方法获取了对象的所有权。这意味着在调用该方法后,对象将被移动,调用者将无法再使用该对象。例如:

&self

当方法签名中使用 &self 时,表示该方法以不可变引用的方式借用对象。这意味着在调用该方法后,对象仍然可用,但只能以只读方式访问。例如:

&mut self

当方法签名中使用 &mut self 时,表示该方法以可变引用的方式借用对象。这意味着在调用该方法后,对象仍然可用,并且可以对其进行修改。例如:

总结

  • self:获取对象的所有权,调用后对象被移动。
  • &self:以不可变引用的方式借用对象,调用后对象仍然可用,但只能读取。
  • &mut self:以可变引用的方式借用对象,调用后对象仍然可用,并且可以修改。