#json #io #json-object #file-writer #rolling-file

bin+lib incremental-writer

文件写入器的包装器,用于将 JSON 对象追加到文件中的数组

3 个版本

0.1.2 2020 年 8 月 13 日
0.1.1 2020 年 8 月 11 日
0.1.0 2020 年 8 月 11 日

#1443文件系统

MIT/Apache

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