gpt4 book ai didi

rust - 克隆固定大小数组的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-29 08:14:26 25 4
gpt4 key购买 nike

我有一个结构,它由一个具有 65536 个元素的固定大小的字节数组组成。

我天真地在我的结构上实现了 Clone — 我创建了一个新数组并循环遍历原始数组,一次复制一个元素。是否有更有效或更惯用的方法来执行此操作,基本上可以归结为 memcpy

最佳答案

从 Rust 1.21 开始

Clone 的项目数组总是实现 Clone,因此您可以简单地调用数组上的 .clone(),或者 #[derive(Clone)] 在结构上。

Rust 1.21 之前

从 Rust 1.12 开始,数组最多只能为 32 个项目实现 Clone。但是,数组为任意数量的项目实现Copy(尽管Copy 需要Clone!)。因此,我们可以在 Clone 的实现中制作数组的隐式副本。

struct Foo {
b: [u8; 65536],
}

impl Clone for Foo {
fn clone(&self) -> Self {
Foo {
b: self.b
}
}
}

如果您还希望您的结构实现Copy,那么您也可以通过复制self 来实现Clone::clone :

#[derive(Copy)]
struct Foo {
b: [u8; 65536],
}

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

关于rust - 克隆固定大小数组的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com