如果类型也实现了Copy
,则Copy
的文档概述了Clone
实现的要求
Clone
是Copy
的一个超特性,所以所有的Copy
都必须实现Clone
.如果一个类型是Copy
,那么它的Clone
实现只需要返回*self
(参见上面的示例).
这很容易在代码审查或使用clippy中判断,但我想知道是否也可以编写测试来判断它.
我的第一个 idea 是,由于Copy
是一个简单的逐位复制,我可以判断一个引用的字节内容,assert_eq!(bit_contents(&t), bit_contents(&t.clone()))
.然而,我认为bit_contents
可能是潜在的不健全的,因为 struct 可能有未初始化的内存(如果它包含union
或enum
的较小变体).
我的理解正确吗?是否有其他方法可以确保Clone
trait在T: Copy
中正确实现?
(这个问题主要是为了理解Rust的内存处理,出于实际目的,我很高兴只使用clippy lint)