#rsv #serde #csv #parser

rsv-core

支持Serde的RSV读写

3个版本

0.0.4 2024年6月16日
0.0.3 2024年1月31日
0.0.2 2024年1月31日

#1247 in 编码

Download history 201/week @ 2024-06-16 3/week @ 2024-06-23 23/week @ 2024-06-30 1/week @ 2024-07-14 71/week @ 2024-07-28 6/week @ 2024-08-04 7/week @ 2024-08-11

84 个月下载
用于 convert2json

MIT 许可证

27KB
704

rsv

一个用于Rust的RSV读取器和写入器包。

什么是rsv?

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

在此处找到Stenway创建的规范这里

示例

use rsv_core::reader::Reader;
use rsv_core::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
~22K SLoC