| Crates.io | rosv |
| lib.rs | rosv |
| version | 1.2.1 |
| created_at | 2024-01-09 14:53:07.989034+00 |
| updated_at | 2025-05-09 19:19:11.756635+00 |
| description | An implementation of the RSV file format |
| homepage | |
| repository | https://gitlab.com/bhamlin/rosv |
| max_upload_size | |
| id | 1094079 |
| size | 27,644 |
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&strRc<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?");