Crates.io | better-vdf |
lib.rs | better-vdf |
version | 0.1.0 |
source | src |
created_at | 2024-03-08 12:24:18.85964 |
updated_at | 2024-03-08 12:24:18.85964 |
description | A VDF serialization file format using serde |
homepage | |
repository | https://github.com/MarkV43/better-vdf |
max_upload_size | |
id | 1166785 |
size | 38,440 |
Since none of the VDF implementations I tried on crates.io worked for my intended purposes, I wrote my own.
Considering that VDF is a very badly documented data format, some data types (such as booleans) were implemented
in a way that looks compatible with the data format, although they may not be 100% compatible with the original format.
Vec
s and bool
s are a couple of examples.
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Serialize, Deserialize, Debug)]
struct Test {
test: TestData,
}
#[derive(Serialize, Deserialize, Debug)]
struct TestData {
name: String,
list: Vec<TestObj>,
map: HashMap<u64, i64>,
}
#[derive(Serialize, Deserialize, Debug)]
struct TestObj {
obj: String,
id: usize,
weight: f32,
}
fn main() {
let vdf = r#"
"test"
{
"name" "Better VDF"
"list"
{
"0"
{
"obj" "main_obj"
"id" "19231"
"weight" "12.9"
}
"1"
{
"obj" "secondary_obj"
"id" "381928"
"weight" "5.12"
}
}
"map"
{
"228980" "12318293"
"278319" "-12393180"
}
}
"#;
// Deserializing
let test: Test = better_vdf::from_str(vdf).unwrap();
println!("{test:#?}");
// Serializing
let serial = better_vdf::to_string(&test).unwrap();
println!("{serial}");
}