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};