有没有办法使用std :: io :: Write写入内存缓冲区而无需重新分配?

时间:2017-02-10 13:39:11

标签: io rust

有没有办法使用std::io::Write将流直接写入内存,而无需在开始时预先分配final,或者在写入时可能重新分配整个数组?

虽然Vec实现了Write,但这需要连续的内存,我假设可以像常规向量调整一样重新分配。

Rust的stdlib是否支持这样的内容,还是需要实现?

我想写入有可能进入多个GiB的内存。内存可能是碎片化的,并且我可能无法获得所需大小的连续区域。相反,分配许多块(可能是固定的2次幂大小)并在需要时分配更多块是非常有效的。

一旦完成,你可以读回数据,压缩内存中的块,将一些缓存到磁盘,二进制差异与之前的写入重复删除块等等。

1 个答案:

答案 0 :(得分:1)

Rust 1.15.1标准库中没有这样的支持。

一旦您实现了处理正在创建的数据结构并避免出现任何内存碎片问题,实现Write应该很简单。

如果64位计算机上存在内存碎片问题(16 Exabytes)  或者较小的48位寻址(256太字节),我建议重新检查您的解决方案是否适合问题域。