fn foo(self, arg2: Type2) -> ReturnType {
// body
}
self
可以有三种形式
self
:代表所有权,可以对值做任何事情:移动、销毁、修改、通过引用借出值。传递值时,值被移动到新位置:新位置拥有值了,原位置不能再访问值。大多数方法不使用self
。&mut self
:代表对没有所有权的值的临时独占访问。可以覆盖值,如同另一个值交换;但不能移走值。&mut self
适用于需要修改自身的方法。&self
:代表对没有所有权的值的临时共享访问,适用于需要观察self
的方法。