根据撰写本文时的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)
归档时间: |
|
查看次数: |
231 次 |
最近记录: |