[Rust编程之道笔记]Copy trait

Rust编程之道一书 3.4.4 标签trait

copy trait 用来标识可以按位复制其值的类型,按位复制等价于c语言中的 memcpy。

pub trait Copy: Clone { }

copy trait 继承自 clone trait,意味着要实现 Copy trait 的类型,必须实现 Clone trait 中定义的方法。

要实现 Copy trait,就必须同时实现 Clone trait。

struct MyStruct;

impl Copy for MyStruct { }

impl Clone for MyStruct {
    fn clone(&self) -> MyStruct {
        *self
    }
}

rust提供了更方便的 derive 属性:

#[derive(Copy, Clone)]
struct MyStruct;

copy 的行为是隐式行为,开发者不能重载 Copy 行为,它永远都是一个简单的位复制。

并非所有的类型都可以实现 Copy trait。