如何在不克隆的情况下将字节从切片移到数组的中间

时间:2019-06-20 09:27:57

标签: rust

我正在尝试覆盖数据包的有效负载。我目前有以下代码,它可以工作,但是通过perf进行基准测试表明,克隆每个数据包的有效负载会产生很大的开销。不进行克隆的最佳方法是什么?如果效率更高,我不怕不安全。

struct Packet {
    buffer: [u8; 1613],
}

impl Packet {
    fn new() -> Self {
        Self {
            buffer: [0; 1613],
        }
    }

    fn clone_into_buffer(&mut self, src: &[u8; 1613]) {
        self.buffer.clone_from_slice(src);
    }
}

fn main() {
    let mut packet = Packet::new();

    packet.clone_into_buffer(&[1; 1613]);
}

playground link

0 个答案:

没有答案