我的理解是,可变借款人可以将所有权转移给另一个可变借款人.但这一举动似乎与移动非指针变量有点不同.我们来看一个例子吧.下面的内容p1会在第一次调用p2时移动到compute().但所有权似乎回归到p1了compute()回归之后.
fn compute(p2: &mut Point) {
}
fn reset(p1: &mut Point) {
compute(p1); //OK
compute(p1); //OK
}
Run Code Online (Sandbox Code Playgroud)
这与常规变量的移动方式不同.
fn compute(p2: Point) {
}
fn reset(p1: Point) {
compute(p1); //OK
compute(p1); //Compile error
}
Run Code Online (Sandbox Code Playgroud)
现在,所有权不恢复到p1第一后compute()调用返回.
由于许多原因,这两种行为都是可以理解和可取的 但我只想证实我的理解,这两个举动在本质上略有不同.我是这样思考的吗?
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |