#serde #rsv #parser #row

已删除 rsv-rust

支持 Serde 的 RSV 读写

0.0.2 2024年1月31日

#76 in #row

MIT 许可证

27KB
704 代码行

rsv

为 Rust 提供的 rsv 读取器和写入器 crate。

什么是 rsv?

字符串值行(rsv)是对 csv 格式的修改,用未使用的 Unicode 字节替换分隔符字符。这使得编码和解码变得非常简单和一致。

这里找到由 Stenway 创建的规范

示例

use rsv::reader::Reader;
use rsv::writer::Writer;
use serde::{Deserialize, Serialize};


#[derive(Debug, Deserialize, Serialize)]
struct ExampleStruct {
    _num: i32,
    _string: String,
    _option: Option<f64>,
    // _vec_option: Vec<Option<f64>>,
}


fn writer() {
    let mut w = Writer::from_path("basic-serde-example.bin").unwrap();
    let a = ExampleStruct { _num: 30202, _string: "Hello Stenway!".to_string(), _option: None };
    let b = ExampleStruct { _num: -30202, _string: "Hello Stenway!".to_string(), _option: Some(3.14) };


    w.serialize(&a).unwrap();
    w.serialize(&b).unwrap();
}


fn reader() {
    let mut r = Reader::from_path("basic-serde-example.bin").unwrap();


    // If the compiler is unable to implicitly determine the type you may need
    // to explicitly set it.
    let mut r = r.deserialize::<ExampleStruct>();


    println!("{:#?}", r.next().unwrap());
    println!("{:#?}", r.next().unwrap());
    assert!(r.next().is_none());
}

依赖关系

~0.4–1MB
~23K SLoC