2个不稳定版本
0.2.0 | 2023年11月5日 |
---|---|
0.1.0 | 2021年8月8日 |
在文本处理中排名913
每月下载量2,880
在29个 crates 中使用(直接使用6个)
34KB
525 行
keyvalues-parser
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版,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,应以上述方式双授权,无需额外条款或条件。
依赖项
~2.1–2.8MB
~57K SLoC