Expand description
不能隐式复制的类型的 Clone
trait。
在 Rust 中,一些简单类型是 “隐式可复制的”,当您分配它们或将它们作为参数传递时,接收者将获得一个副本,而将原始值保留在原位。
这些类型不需要分配就可以复制并且没有终结器 (即,它们不包含拥有的 boxes 或实现 Drop
),因此编译器认为它们便宜且安全地进行复制。
对于其他类型,必须通过约定实现 Clone
trait 并调用 clone
方法来显式复制。
基本用法示例:
let s = String::new(); // 字符串类型实现克隆
let copy = s.clone(); // 所以我们可以克隆它
Run要轻松实现 Clone trait,还可以使用 #[derive(Clone)]
。Example:
#[derive(Clone)] // 我们将克隆 trait 添加到 Morpheus 结构体
struct Morpheus {
blue_pill: f32,
red_pill: i64,
}
fn main() {
let f = Morpheus { blue_pill: 0.0, red_pill: 0 };
let copy = f.clone(); // 现在我们可以克隆它了!
}
RunTraits
- 通用的 trait,用于显式复制对象。
Derive Macros
- 派生宏,生成
Clone
trait 的 impl。