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

推荐答案

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

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

本题详细解读

self

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

-- -------------------- ---- -------
------ ---------

---- -------- -
    -- ------------- -
        -- ------------
    -
-

-- ------ -
    --- -------- - ---------
    ------------------- -- ------------ ---
    -- -------- -----
-

&self

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

-- -------------------- ---- -------
------ ---------

---- -------- -
    -- ----------- -
        -- ----------------
    -
-

-- ------ -
    --- -------- - ---------
    ---------------- -- ------------ ----
    -- -------- ------------
-

&mut self

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

-- -------------------- ---- -------
------ ---------

---- -------- -
    -- ----------- ----- -
        -- ---------------
    -
-

-- ------ -
    --- --- -------- - ---------
    ------------------ -- ------------ -----------
    -- -------- -------------
-

总结

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