我有一个结构,它由一个具有 65536 个元素的固定大小的字节数组组成。
我Clone天真地在我的结构上实现了 - 我创建了一个新数组并循环遍历原始数组,一次一个复制每个元素。有没有更有效或惯用的方法来做到这一点,基本上可以归结为 a memcpy?
Clone始终实现的项目数组Clone,因此您可以简单地调用.clone()数组或#[derive(Clone)]结构。
从 Rust 1.12 开始,数组Clone最多只能实现32 个项目。但是,数组可以实现Copy任意数量的项目(尽管Copy需要Clone!)。因此,我们可以在我们的实现中制作数组的隐式副本Clone。
struct Foo {
b: [u8; 65536],
}
impl Clone for Foo {
fn clone(&self) -> Self {
Foo {
b: self.b
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您还希望您的结构实现Copy,那么您也可以Clone::clone通过复制以下内容来实现self:
#[derive(Copy)]
struct Foo {
b: [u8; 65536],
}
impl Clone for Foo {
fn clone(&self) -> Self {
*self
}
}
Run Code Online (Sandbox Code Playgroud)