详细理解关于 Rust 的 Copy、Clone 机制
结合生命周期标注,理解复杂场景下 clone、copy 的作用,内部原理细节
发现在使用了 Copy 这个 Trait 之后,原本会提示的 value moved,不再会报错了。 Copy 的作用类型和特点:
- 按值复制
- 不需要显式 clone
- 零成本复制(复制是按照位来进行的,开销很低,适合简单,轻量的类型(如数值类型与指针))
Copy 的使用条件:
- 类型中所有的字段都应该实现了 Copy
- 类型中不能包含动态内存,如 String 与 Vec,因为复制这些类型需要 Deep Copy
- 类型不能实现 Drop Trait
Rust 会为下面这些类型自动实现 Copy
- 所有的标量类型 i32, f64, char, bool
- 固定大小的切片 [u8; 4]
- 没有包含非 Copy 字段的元组 (i32, u8)
本文由作者按照 CC BY 4.0 进行授权