gpt4 book ai didi

rust - 如何更新 Bytes/BytesMut 的一部分?

转载 作者:行者123 更新时间:2023-12-03 11:34:09 25 4
gpt4 key购买 nike

我在 Bytes 结构中有一个固定大小的缓冲区,我想在其中复制一些数据。

目前我唯一能看到的是从开始处截取一部分,添加我想要的内容,然后在末尾添加切片,但我确信这会产生一两个大副本我想避免,我只需要更新缓冲区的中间部分。有没有不使用 unsafe 的简单方法?

最佳答案

变异Bytes .该结构的全部目的是表示数据的引用计数不可变 View 。您将需要以某种方式复制数据。也许你创建了一个 Vec<u8>BytesMut来自数据。

BytesMut工具 AsMut<[u8]> , BorrowMut<[u8]>DerefMut ,因此您可以使用任何现有技术就地修改切片。例如:

use bytes::BytesMut; // 0.5.4

fn main() {
let mut b = BytesMut::new();
b.extend_from_slice(b"a good time");

let middle = &mut b[2..][..4];
middle.copy_from_slice(b"cool");

println!("{}", String::from_utf8_lossy(&b));
}

另见:

without using unsafe

不要使用 unsafe对于这个问题。您导致未定义的行为。

关于rust - 如何更新 Bytes/BytesMut 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62029662/

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