3 个版本
0.1.2 | 2020 年 8 月 13 日 |
---|---|
0.1.1 | 2020 年 8 月 11 日 |
0.1.0 | 2020 年 8 月 11 日 |
#1443 在 文件系统
9KB
111 行
incremental-writer
incremental-writer 是一个库,它提供写入不同格式到磁盘上文件的写入器,目前仅支持 JSON。increment_writer::json::IncrementalJsonWriter 提供了一个写入器,它接受文件写入器并将 JSON 对象递增地写入该文件内部的数组,使用 serde_json 实现。
在 Windows 和 Unix 上都适用。
它实现了 write trait 的 write(&[u8]) 和 flush() 以及 write_json(),后者接受任何可序列化对象并将其写入底层数组。
示例
extern crate incremental_writer;
use incremental_writer::json;
use serde::{Serialize, Deserialize};
fn main() {
let rows: Vec<Record> = vec![0, 1, 2, 3, 4, 5, 6, 7 , 8, 9, 10]
.iter()
.map(|num| Record { name: String::from("Test"), detail: *num})
.collect();
let out = std::fs::File::create("test.json").unwrap();
let mut writer = json::IncrementalJsonWriter::new(out);
for row in rows {
//the element is written to the file on each iteration
//if it stops before finishing, the JSON is still valid
writer.write_json(&row).unwrap();
}
}
#[derive(Serialize, Deserialize, Debug)]
struct Record {
name: String,
detail: u32
}
依赖项
~0.8–1.7MB
~36K SLoC