在 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 是堆栈上的一个值时(它将被复制到哪里)吗?
当该方法使对象无效时,获取所有权是有意义的。想象一种方法Iterator.drop(u32),其实现为返回一个新对象而不是修改现有对象。在原始迭代器上调用其他方法会导致不一致。
此类失效的其他示例是不同类型的包装器。
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |