小编Sei*_*ida的帖子

在Rust中,有没有一种方法可以将文件的内容直接读取到给定的未初始化字节数组中?

我正在寻找一种将文件内容直接读入提供的未初始化字节数组的方法。

目前,我有如下代码:

use std::fs::File;
use std::mem::MaybeUninit;

let buf: MaybeUninit<[u8; 4096]> = MaybeUninit::zeroed();
let f = File::open("some_file")?;
f.read(buf.as_mut_ptr().as_mut().unwrap())?;
Run Code Online (Sandbox Code Playgroud)

该代码可以正常工作,只是它不必要地将字节数组初始化为0。我想替换为MaybeUninit::zeroed()MaybeUninit::uninit()但这样做会根据的文档触发未定义的行为MaybeUninit。有没有一种方法可以通过仅使用标准库,使用文件的内容来初始化未初始化的内存区域,而无需先将数据读取到其他地方?还是我们需要使用特定于操作系统的API?

rust

4
推荐指数
1
解决办法
143
查看次数

标签 统计

rust ×1