15个版本
0.5.7 | 2024年7月23日 |
---|---|
0.5.5 | 2023年8月30日 |
0.5.3 | 2021年12月16日 |
0.5.1 | 2020年10月9日 |
0.1.3 | 2018年6月6日 |
#257 in 编码
2,531 每月下载
用于 2 crates
385KB
5.5K SLoC
flatdata-rs
一次写入,多次读取,最小开销的二进制结构化文件格式。
Flatdata是一个库,提供数据结构,方便创建、存储和访问具有最小开销的打包内存映射结构。
使用flatdata
,用户通过一个非常简单的模式语言定义数据格式的模式,该语言支持plain structs、vectors和多向量。然后使用该模式生成用于将数据序列化和反序列化的构建器和读取器,以将数据保存到磁盘上的文件存档中。
数据以可移植的方式序列化,允许使用内存映射存储进行零开销随机访问:操作系统设施用于加载数据、缓存和分页,最重要的是,访问数据就像它在内存中一样。
示例
文件夹tests/coappearances包含Tolstoi的《安娜·卡列尼娜》中字符共现的图,作为flatdata存档模式以及序列化数据。独立的测试读取和写入所有不同类型的数据,并检查数据是否正确进行了反/序列化。
入门指南
我们建议您使用build.rs
来自动生成从您的flatdata
模式生成的代码。
// build.rs
fn main() {
flatdata::generate(
"path/to/my_schema.flatdata",
&std::env::var("OUT_DIR").unwrap(),
)
.expect("generator failed");
}
然后向您的crate添加一个模块,并包含生成的代码
#![allow(dead_code)]
include!(concat!(env!("OUT_DIR"), "path/to/my_schema.rs"));
// re-export if desired
pub use my_schema::*;
请参阅generator.rs的文档以获取更详细的说明。
依赖项
~0.3–9MB
~84K SLoC