4 个版本 (2 个重大更改)
0.3.1 | 2022 年 9 月 13 日 |
---|---|
0.3.0 | 2022 年 8 月 30 日 |
0.2.0 | 2022 年 8 月 28 日 |
0.1.0 | 2022 年 8 月 17 日 |
#2342 在 解析器实现
48KB
1.5K SLoC
KVON-rs
KVON 是一种人类可读的序列化格式。这个crate提供了一个可以反序列化KVON的解析器。此外,它还有一个KVON编码器。有关详细信息,请查看示例目录。
使用示例
创建和解析对象
use kvon_rs::{object, parse_string};
static SOURCE: &'static str = "
a:
b: 0
c: [1 2 [3 4]]
";
fn main() {
let object1 = object! {
a: {
b: 0,
},
c: [1, 2, [3, 4]]
};
let object2 = parse_string(SOURCE).unwrap();
assert_eq!(object1, object2);
}
解析和读取对象
use kvon_rs::{
parse_string,
value::{GetterResult, PrimitiveValue, Value},
};
static SOURCE: &'static str = "
a:
b: 0
c: [1 2 [3 4]]
";
fn main() -> GetterResult<()> {
let object = parse_string(SOURCE).unwrap();
// access nested values with if-let
if let Value::Object(obj) = &object {
let c = &obj["c"];
if let Value::Array(arr) = c {
if let Value::Array(arr) = &arr[2] {
if let Value::Primitive(PrimitiveValue::Number(n)) = arr[1] {
assert_eq!(n, 4.0);
}
}
}
}
// access nested values by unwrapping
let n = object.get_objects()?["c"].get_vector()?[2].get_vector()?[1]
.get_primitive()?
.get_number()?;
assert_eq!(n, 4.0);
Ok(())
}
依赖项
~2.2–3MB
~54K SLoC