1 个不稳定版本

0.1.0 2019年6月24日

#7 in #i8

BSD-3-Clause

15KB
187 代码行

serde_ltsv

Build Status Latest version Documentation License

标签化制表符分隔值 (LTSV) 格式是制表符分隔值 (TSV) 的一个变体。LTSV 文件中的每个记录都表示为单行。每个字段由制表符分隔,并带有标签和值。标签和值由冒号分隔。使用 LTSV 格式,您可以通过分割制表符(类似于原始 TSV 格式)轻松解析每一行,并以任何特定的顺序扩展具有唯一标签的任何字段。

time:[10/Oct/2000:13:55:36 -0700]\tdone:true\tscore:-1\tmean:0.42\tcounter:42\tlevel:3\thost:testhostname\tname1:value1\tname 2: value 2\tn3:v3\tmessage:this is a test

快速入门

您可以通过将其添加到您的 Cargo.toml 中开始使用它。

[dependencies]
serde_derive = "1.0"
serde_ltsv = "0.1"

然后,创建一个结构,实现 serde::Serialize / serde::Deserialize 特性,并使用任何 serde 库使用该结构。

#[macro_use]
extern crate serde_derive;
extern crate serde_ltsv;
extern crate serde_json;
extern crate serde_yaml;

#[derive(Serialize, Deserialize)]
struct Foo {
    a: String,
    b: i8,
    c: bool
}

fn main() {
    let t = Foo { a: "toto".into(), b: 8, c: true };
    let str_t = serde_ltsv::to_string(&t).unwrap();
    println!("As ltsv => {}", &str_t);
    let t2: Foo = serde_ltsv::from_str(&str_t).unwrap();
    println!("As json => {}", serde_json::to_string_pretty(&t2).unwrap());
    println!("As yaml => {}", serde_yaml::to_string(&t2).unwrap());
}

输出:

As ltsv => a:toto	b:8	c:true
As json => {
    "a": "toto",
    "b": 8,
    "c": true
}
As yaml => ---
a: toto
b: 8
c: true

许可证: BSD-3-Clause

依赖项

~0.6–1.2MB
~28K SLoC