#gnu #serde #format #rec #serialization #book #recfiles

serde_rec

GNU Recfiles 数据格式的 serde 实现

1 个不稳定版本

0.1.0 2020年3月15日

#2008编码

MIT 许可证

12KB
374

recfiles & serde_rec

从 rust 管理 GNU Recfiles。

recfiles serde_rec

安装

recfiles(内存中的 recfile 处理) & serde_rec(serde 的数据格式)在 crates.io

使用方法

use recfiles::Record;
use serde_rec::to_string;

#[derive(Default, Serialize)]
#[serde(rename_all="PascalCase")]
struct Book {
    author: Vec<String>,
    title: String,
    publisher: Option<String>,
}

impl Record for Book {}

let book = Book {
    author: vec![String::from("A.E.J. Eliott, OBE")],
    title: String::from("Thirty Days in the Samarkind Desert with the Duchess of Kent"),
    ..Default::default()
}

let serialised = to_string(&book).unwrap();

assert_eq!(serialised, textwrap::dedent("
    Author: A.E.J. Eliott, OBE
    Title: Thirty Days in the Samarking Desert with the Duchess of Kent

");

我们还可以指定 'Book' 的记录描述符

let book_descriptor = recfiles::Descriptor {
    name: String::from("Book"),
    key: vec![String::from("Title")],
    allowed: vec![String::from("Publisher"),
}

并序列化完整的记录集

let rs = recfiles::RecordSet {
    descriptor: Some(book_descriptor),
    records: vec![book],
}

serde_rec::to_string(&rs);

工作正在进行中

这是一个正在进行中的项目,目前不完整且文档不佳。

(撰写本文时,以上就是你所能得到的全部内容了 😉。)

即将推出...

  • 反序列化
  • 推导描述符
  • 文件(而不是仅从字符串到字符串)辅助工具
  • 内存(而不是通过 recutils 外壳)查询辅助工具
  • 文档!

依赖关系

~0.4–1MB
~23K SLoC