如何从 BytesMut 移动一系列元素?

How to move a range of elements from BytesMut?

我有一个采用 BytesMut 可变实例的方法。我想将它的块移动到 BytesMut 的其他实例中,但我不确定这样做的语法。有没有例子?

您可以在原始 buf 上使用范围运算符来移动内容或 split_off 基于某个偏移值。例如:

use bytes::{BufMut, BytesMut};

fn main() {
    let mut buf = BytesMut::with_capacity(64);
    let mut buf_to = BytesMut::with_capacity(64);

    buf.put_u8(b't');
    buf.put_u8(b'e');
    buf.put_u8(b's');
    buf.put_u8(b't');

    // move last 2 elements
    buf_to.put(&buf[2..]);
    println!("{:#?}", buf_to); // b"st"

    // You can also split_off the original value
    let mut another_buf = buf.split_off(2);
    println!("{:#?}", another_buf); // b"st"
    println!("{:#?}", buf); // b"te"
}