需要拥有自我的典型用例是什么?

Nam*_*ang 5 rust

在 Rust 书的方法语法章节中,有一个获取 self 所有权的例子:

struct Circle {
    x: f64,
    y: f64,
    radius: f64,
}

impl Circle {
    fn reference(&self) {
        println!("taking self by reference!");
    }

   fn mutable_reference(&mut self) {
       println!("taking self by mutable reference!");
   }

   fn takes_ownership(self) {
      println!("taking ownership of self!");
   }
}
Run Code Online (Sandbox Code Playgroud)

需要拥有自我的典型用例是什么?只有当 self 是堆栈上的一个值时(它将被复制到哪里)吗?

Sil*_*eak 4

当该方法使对象无效时,获取所有权是有意义的。想象一种方法Iterator.drop(u32),其实现为返回一个新对象而不是修改现有对象。在原始迭代器上调用其他方法会导致不一致。

此类失效的其他示例是不同类型的包装器。