arrays - How to convert IoSliceMut array into Vec?
问题描述
let mut buffer = Vec::with_capacity(10);
stream.read_vectored(&mut buffer);
The code above turns buffer
into an IoSliceMut
vector, but I don't know how to read from this vector or how to convert it back into a 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
}
推荐阅读
- scip - 动态改变 SCIP 参数
- angular - 验证物品数量
- python - 多次捕获同一行
- python - 别名不影响 bash 中的 python 执行环境
- python - 如何在函数中使用函数作为参数?
- docker-compose - 如何使用 laradock 和 docker-compose 版本 3 为 nginx 容器分配静态 ip
- javascript - 无法让 jsp 文件正常工作,不会执行脚本
- javascript - 如何在js中对数字进行四舍五入
- amazon-web-services - 如何将 Terraform 资源注入到我的 Lambda 代码中?
- android-studio - 会话“应用程序”:安装失败。在每个应用程序中,包括一个新应用程序