better_vdf/
lib.rs

1//! Since none of the VDF implementations I tried on crates.io worked for my intended purposes, I wrote my own.
2//!
3//! Considering that this is a very badly documented data format, some data types (such as booleans) were implemented
4//! in a way that looks compatible with the format (much like an extension, in case it was not intended).
5//!
6//! # Usage
7//!
8//! ```
9//! use std::collections::HashMap;
10//! use serde::{Deserialize, Serialize};
11//!
12//! #[derive(Serialize, Deserialize, Debug)]
13//! struct Test {
14//!     test: TestData,
15//! }
16//!
17//! #[derive(Serialize, Deserialize, Debug)]
18//! struct TestData {
19//!     name: String,
20//!     list: Vec<TestObj>,
21//!     map: HashMap<u64, i64>,
22//! }
23//!
24//! #[derive(Serialize, Deserialize, Debug)]
25//! struct TestObj {
26//!     obj: String,
27//!     id: usize,
28//!     weight: f32,
29//! }
30//!
31//! fn main() {
32//!     let vdf = r#"
33//! "test"
34//! {
35//! 	"name"		"Better VDF"
36//! 	"list"
37//! 	{
38//! 		"0"
39//! 		{
40//! 			"obj"		"main_obj"
41//! 			"id"		"19231"
42//! 			"weight"		"12.9"
43//! 		}
44//! 		"1"
45//! 		{
46//! 			"obj"		"secondary_obj"
47//! 			"id"		"381928"
48//! 			"weight"		"5.12"
49//! 		}
50//! 	}
51//! 	"map"
52//! 	{
53//! 		"228980"		"12318293"
54//! 		"278319"		"-12393180"
55//! 	}
56//! }
57//! "#;
58//!     
59//!     // Deserializing
60//!     let test: Test = better_vdf::from_str(vdf).unwrap();
61//!
62//!     println!("{test:#?}");
63//!
64//!     // Serializing
65//!     let serial = better_vdf::to_string(&test).unwrap();
66//!
67//!     println!("{serial}");
68//! }
69//!
70//! ```
71
72mod de;
73mod error;
74mod ser;
75
76pub use de::{from_str, Deserializer};
77pub use error::{Error, Result};
78pub use ser::{to_string, Serializer};