Crates.io | rsv-core |
lib.rs | rsv-core |
version | 0.0.4 |
source | src |
created_at | 2024-01-31 00:04:55.369693 |
updated_at | 2024-06-16 19:42:06.973782 |
description | RSV reading and writing with Serde support |
homepage | https://github.com/MostlyMax/rsv-rust |
repository | https://github.com/MostlyMax/rsv-rust |
max_upload_size | |
id | 1120845 |
size | 36,299 |
an rsv reader and writer crate for Rust.
rows of string values (rsv) is a modification on the csv format that replaces delimiter characters with unused unicode bytes. This makes encoding and decoding incredibly simple and consistent.
find the specification created by Stenway here
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());
}