小编ysl*_*ing的帖子

在 Rust 中,为什么 `a` 在 `let b = &*&a;` 之后保留所有权?

我发现它令人困惑&(*&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)

上述代码之间的语义区别是什么?

究竟哪些语言结构会导致所有权的转移?

ownership rust

7
推荐指数
1
解决办法
98
查看次数

标签 统计

ownership ×1

rust ×1