arrays - 如何将IoSliceMut数组转换为Vec <u8>?

标签 arrays vector rust buffer slice

let mut buffer = Vec::with_capacity(10);
stream.read_vectored(&mut buffer);
上面的代码将buffer转换为IoSliceMut向量,但我不知道如何从该向量中读取或如何将其转换回Vec<u8>

最佳答案

您不必将IoSliceMut结构转换回u8数组,因为您通过可变引用传递了字节,所以read_vectored将字节直接写入数组缓冲区。您可以稍后再使用缓冲区,并且缓冲区中将写入数据。例子:

use std::io::IoSliceMut;
use std::io::Read;

fn main() {
    let mut buffer: [u8; 10] = [0; 10];
    let mut io_slices = [IoSliceMut::new(&mut buffer)];
    let mut data: &[u8] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    data.read_vectored(&mut io_slices);
    dbg!(data, buffer); // data is now in buffer
}
playground

关于arrays - 如何将IoSliceMut数组转换为Vec <u8>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65325239/

相关文章:

javascript - 根据另一个数组值向数组添加项目

java - 数组越界问题

c++ - vector 使用的异常问题

dynamic - 有没有办法将特征引用转换为另一个未连接类型的对象?

rust - 从正文流中返回一个结构

javascript - 按输入类型对数组和分组进行排序

javascript - 在reactjs中,如何映射数组并将 添加到返回值?

C++ 类中的静态 vector

c++ - 如何在一个 vector 中分配多个不同类型的变量或区分其类型

rust - 如何在不显示用户输入的情况下获取密码输入?