Skip to content
On this page

methods就是第一个参数是self的函数 比如:

rust
fn foo(self, arg2: Type2) -> ReturnType {
    // body
}

self有三种形式,主要是有关所有权的:

  • self - Value 完全的所有权
  • &mut self - mutable reference 可修改引用
  • &self - shared reference 共享引用
  • 对于拥有所有权的变量,你可以做: 移动所有权,借出所有权,销毁,修改,访问内容
  • 对于可修改引用
  1. 首先没有所有权,只是引用
  2. 可修改,可以访问内容,但是不可移动所有权,借出所有权,销毁 (在链表中尤其要注意这个事情)
  3. 第二点一句话概括,就是不能让这个变量处于无效状态
  • 对于共享引用(shared reference)
  1. 只能访问内容
  2. 其他所有权限都没有
  3. 可以同时存在多个共享引用,只能同时存在一个可修改引用(mutable reference)
  4. 但是对于共享引用,我们有手段绕开这个限制,对其进行修改,所以共享引用,不称之为不可修改引用( immutable references)