2个不稳定版本

0.2.0 2023年11月5日
0.1.0 2021年8月8日

文本处理中排名913

Download history 705/week @ 2024-04-08 572/week @ 2024-04-15 762/week @ 2024-04-22 950/week @ 2024-04-29 423/week @ 2024-05-06 735/week @ 2024-05-13 505/week @ 2024-05-20 563/week @ 2024-05-27 632/week @ 2024-06-03 899/week @ 2024-06-10 913/week @ 2024-06-17 838/week @ 2024-06-24 737/week @ 2024-07-01 795/week @ 2024-07-08 664/week @ 2024-07-15 523/week @ 2024-07-22

每月下载量2,880
29 crates 中使用(直接使用6个)

MIT/Apache

34KB
525

keyvalues-parser

codecov build status Documentation

keyvalues-parser使用pest来解析VDF文本v1文件到无类型的Rust结构,以简化操作和导航。解析器提供了一个无类型的Vdf表示,以及一个线性的TokenStream

该库主要用于与keyvalues-serde结合使用,它提供了一个更方便(但更受限)的方式来处理VDF文本。

安装

只需将库添加到您的Cargo.toml

[dependencies]
keyvalues-parser = "0.1.0"

快速入门

const LOGIN_USERS_VDF: &str = r#"
"users"
{
    "12345678901234567"
    {
        "AccountName"        "ACCOUNT_NAME"
        "PersonaName"        "PERSONA_NAME"
        "RememberPassword"    "1"
        "MostRecent"        "1"
        "Timestamp"        "1234567890"
    }
}
"#;

use keyvalues_parser::Vdf;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let vdf = Vdf::parse(LOGIN_USERS_VDF)?;
    assert_eq!(
        "12345678901234567",
	vdf.value.unwrap_obj().keys().next().unwrap(),
    );

    Ok(())
}

限制

VDF文本定义得非常不完整。这导致以下自由度被采用

  • 不尊重键值对顺序,键值对存储在一个根据键对值进行排序的BTreeMap
  • 由于表示序列的限制,空的Vec值将表示为缺失的键值对

基准测试

一些基本的基准测试可以在benches目录中找到

这些基准测试只是测试了解析和渲染相当典型的VDF文件的时序和吞吐量

许可证

以下任一许可证下授权:

任选其一。

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,应以上述方式双授权,无需额外条款或条件。

依赖项

~2.1–2.8MB
~57K SLoC