#mmap #buffer #backed #file #memory #fixed-size #memory-backed

mmap_buffer

(大多数情况下)对基于文件的固定大小缓冲区的安全包装

3个版本

0.1.4 2023年4月21日
0.1.3 2023年4月21日
0.1.2 2023年4月1日
0.1.1 2023年4月1日
0.1.0 2023年4月1日

#600 in 内存管理

每月 41 次下载

MIT 许可证

12KB
208 代码行

mmap-buffer

(大多数情况下)对固定大小的基于文件的缓冲区的安全包装。

示例

use mmap_buffer::BackedBuffer;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    {
        let mut buf = BackedBuffer::<i32>::new(100, "test.data")?;

        // These changes will be reflected in the file
        buf[10] = -10;
        buf[20] = 27;
    }
    
    // Later, we can load the same array
    let mut buf = BackedBuffer::<i32>::load("test.data")?;

    assert_eq!(buf[10], -10);
    assert_eq!(buf[20], 27);

    Ok(())
}

lib.rs:

mmap-backed提供了一个(大多数情况下)安全的缓冲区,该缓冲区使用mmap系统调用由文件支持。这些缓冲区不支持动态重新分配,因此它们是固定大小的。以下是一个示例

use mmap_buffer::BackedBuffer;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    {
        let mut buf = BackedBuffer::<i32>::new(100, "test.data")?;

        // These changes will be reflected in the file
        buf[10] = -10;
        buf[20] = 27;
    }
    
    // Later, we can load the same array
    let mut buf = BackedBuffer::<i32>::load("test.data")?;

    assert_eq!(buf[10], -10);
    assert_eq!(buf[20], 27);

    Ok(())
}

依赖关系

~280–500KB