rosv

Crates.iorosv
lib.rsrosv
version1.2.1
created_at2024-01-09 14:53:07.989034+00
updated_at2025-05-09 19:19:11.756635+00
descriptionAn implementation of the RSV file format
homepage
repositoryhttps://gitlab.com/bhamlin/rosv
max_upload_size
id1094079
size27,644
Billy J Hamlin (bhamlin)

documentation

README

RoSV - Rows of Serial Values implementation for Rust

I didn't really like the version included in the RSV Challenge repo, so I made my own.

This crate adds functionality to Vecs and Vec<Vec>s for Option and non-Option entries of:

  • String
  • &str
  • Rc<str>
  • Arc<str>

This crate also adds functionality to Vec<u8> for deserialization:

Bare functions for serialization and deserialization are available in rosv::serialization as well.

use rosv::{DeserializeRoSV, SerializeRoSV};

// Sample data
let rows = vec![
    vec![Some("Hello"), Some("🌎"), None, Some("")],
    vec![Some("A\0B\nC"), Some("Test 𝄞")],
    vec![],
    vec![Some("")],
];

// Return vec as a u8 stream readable by the rosv deserializer.
let stream = rows.serialize_rosv().expect("Now errors when given reserved bytes");

// Consume a stream and deserialize to a new vec.
let data = stream.deserialize_rosv().expect("Bad utf-8 in stream, probably?");
Commit count: 17

cargo fmt