当前位置: 首页 > 知识库问答 >
问题:

如何更新Bytes/BytesMut的部分?

谷光誉
2023-03-14

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

我现在唯一能看到的就是从开始的部分,加上我想要的,然后在最后加上部分,但是我确信这会导致一两个我想要避免的大副本,我只是需要更新中间的缓冲区。有没有一种简单的方法可以做到这一点而不使用不安全的代码?

共有1个答案

宫修贤
2023-03-14

您不会变异字节。结构的全部目的是表示引用计数的数据的不可变视图。您需要以某种方式复制数据。也许您创建了一个Vec

BytesMut实现AsMut

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));
}

另见:

  • 如何惯用地复制切片?
  • 如何在Rust中不同大小的数组之间复制?
  • 如何将数据从一个切片写入同一个切片?
  • 如何操作Rust数组的2个可变切片?
  • 如何从一个切片创建两个新的可变切片?

不使用不安全

不要对此问题使用不安全的。您将导致未定义的行为。

 类似资料:
  • 问题内容: 我正在尝试学习JavaFX,并将swing应用程序转换为JavaFX。我想做的是使用JavaFX来显示程序的进度。 我以前在Swing中所做的是首先使用自定义JComponent创建一个JFrame。然后让我的主程序调用自定义JComponent的方法,该方法将更改JComponent和repaint()中的形状颜色。 下面给出了我想在JavaFX中实现的目标的想法: 我目前将此作为我

  • 问题内容: 我想知道在React / React- Native中部分更新组件状态的最佳方法是什么。除了我可以使函数获取当前状态并创建新状态并合并新的{key:value}和先前状态的事实。例如: 我想将last_name更新为另一个值。当我调用时 ,它将formData词典重置为姓:new Value。有办法有效地做到这一点吗? 问题答案: 我认为您可以尝试两种方法: 点差运算符 如此 要么 获

  • 我们要求当前在SOLR中索引的文档可能需要定期进行部分更新。更新可以是。添加新字段B。更新现有字段的内容。我们模式中的一些字段是存储的,其他的没有。 Solr4确实允许这样做,但必须存储所有字段。见Update a new field to existing document和http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-updat

  • 2) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deploymentName).CreateOrReplace(deployment); 3) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deplo

  • 我正在使用Django Haystack和ElasticSearch后端作为我的搜索页面。我使用MongoDB作为我的数据库 在我的搜索页面中,一切正常。 问题 我的web应用程序使用外部脚本使用pymongo更改后端数据库中的字段 我的数据库有两个字段(文件、分析) 第三方脚本将运行并将分析字段更改为True或False。 运行脚本后,当我搜索文件名时,它会在结果中显示更新的Analysis。

  • 问题内容: 我正在开发非OSGI应用程序,我需要更新骆驼路线中使用的某些属性的值(已加载BridgePropertyPlaceHolder)。所以我认为: 要使用酷炫的管理控制台Hawtio,以便使用JMX更新骆驼 创建一个将更新属性..的JMX MBean。 我成功创建了MBean操作并使用JMX对其进行了调用,但是我不知道如何更新依赖于这些属性的骆驼路线。 有没有一种方法可以从外部更新骆驼上下