我发现它令人困惑&(*&a)并且&{*&a}行为不同。
详细地说,以下代码编译失败:
struct CanNotCopy;
fn main(){
let a = CanNotCopy;
&{*&a};
let c = a;
}
Run Code Online (Sandbox Code Playgroud)
并编译了以下代码:
struct CanNotCopy;
fn main(){
let a = CanNotCopy;
&(*&a); // or &*&a;
let c = a;
}
Run Code Online (Sandbox Code Playgroud)
上述代码之间的语义区别是什么?
究竟哪些语言结构会导致所有权的转移?