【发布时间】:2020-08-30 09:39:37
【问题描述】:
我正在尝试通过编写一个模拟器来熟悉 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])。
现在有了这段代码,我没问题,它可以满足我的要求,但是我有更好(更快/更紧凑)的方法吗?
【问题讨论】:
-
std::fs::read(filepath)已经返回Vec<u8>。唯一的区别是您希望前 400 个字节为零? -
@ÖmerErden 我正在像数组一样使用 Vector(我知道我应该只使用数组,但我这样做是为了更适应语言)因为我的模拟器的内存是固定的在 4K 时,我在地址 400 处加载图像,所以我希望从该点复制图像,使内存的其余部分保持不变(如果另一个地址为 0,则它们保持为零,依此类推)。跨度>
-
Vec::splice可以完成这项工作:play.rust-lang.org/…,如果您使用返回的迭代器,它还可以提供替换元素。
标签: rust