1 个不稳定版本
0.1.0 | 2024年3月8日 |
---|
#1204 在 解析器实现 中
28KB
784 行
由于我在 crates.io 上尝试的 VDF 实现都无法满足我的目的,所以我编写了自己的。
考虑到 VDF 是一个非常不规范的文档数据格式,一些数据类型(如布尔值)的实现方式看起来与数据格式兼容,尽管它们可能与原始格式不完全兼容。例如,`Vec` 和 `bool`。
使用方法
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}");
}
依赖关系
~0.4–1MB
~22K SLoC