如何将 IoSliceMut 数组转换成 Vec<u8>?
How to convert IoSliceMut array into Vec<u8>?
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
}
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
}