gpt4 book ai didi

rust - 复制向量中的二进制文件

转载 作者:行者123 更新时间:2023-12-03 11:32:36 25 4
gpt4 key购买 nike

我正在尝试通过编写模拟器来熟悉Rust(并学习它)。
我需要将文件(我的rom图像)加载到向量中,这就是我的模拟ram。
这是我的代码:

let image = std::fs::read(filepath).ok().unwrap();
let mut i = 0;
for n in image {
self.memory[400 + i] = n;
i += 1;
}
内存是一个用全零初始化的 Vec<u8>( memory: vec![0; 4*1024])。
现在有了这段代码,我就可以了,它可以满足我的要求,但是 我是否有更好的(更快/更紧凑)的方法来做到这一点?

最佳答案

do I have a better (faster/compact) way to do this?


是的。 std::fs::read是一个便利函数,它分配一个缓冲区并将其读取到数据中,并在数据到达时将其增长。由于您已经拥有一个预先分配的向量,并且不希望调整大小,因此可以使用 BufRead::read 直接读取该向量,而无需进行不必要的分配。如果您的ROM大小是固定的,则可以通过一次调用 read_exact 来读取数据:
let mut file = BufReader::new(File::open(filepath)?);
file.read_exact(&mut self.memory[400..400 + ROM_SIZE])?;
这样可以避免不必要的分配和复制。当然,在很多情况下,这在实践中不会有什么不同,但是由于您的目标是学习,因此了解最有效的方法是有道理的。

关于rust - 复制向量中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63656084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com