为什么我的隐式Copyable变量被移动了?

Raj*_*ajV 4 rust

根据撰写本文时的Rust参考文献:

对于包含拥有指针或实现特殊特征Drop的值的类型,移动变量.所有其他类型都被复制.

以下是我的代码.我希望Point是一个可复制的类型.但它正在被移动,以下代码将无法在0.13.0每晚进行编译.

struct Point {
    x: uint,
    y: uint
}

fn main() {
    let p: Point = Point{x: 10u, y: 10u};

    let p1 = p;
    let p2 = p; //Error: p has been moved p1
}
Run Code Online (Sandbox Code Playgroud)

编译错误说明:

note: `p` moved here because it has type `Point`, which is moved by default
Run Code Online (Sandbox Code Playgroud)

为什么Point不被视为可复制类型?

Arj*_*jan 10

Copy 现在必须明确添加,指南尚未更新:

#[derive(Copy)]
struct Point {
    x: uint,
    y: uint
}

fn main() {
    let p: Point = Point{x: 10u, y: 10u};

    let p1 = p;
    let p2 = p; // Now works because it is Copy.
}
Run Code Online (Sandbox Code Playgroud)