3 个版本
0.1.2 | 2019年2月18日 |
---|---|
0.1.1 | 2019年2月17日 |
0.1.0 | 2019年2月17日 |
#1303 in 过程宏
23KB
372 代码行(不含注释)
serde-json-helpers
一个与稳定版 Rust 2018 兼容的过程宏集合,简化了一些由 serde_derive
没有涵盖的常见操作。
虽然这个包命名为 serde_json_helpers
,但使用它并不需要 serde_json
;这只是过程宏想要帮助的。
示例
serde_enum_string
use serde_json_helpers::serde_enum_string;
#[serde_enum_string(transform = "snake_case")]
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
enum ExampleEnum {
Option1,
Option2,
Option3,
AnotherOption,
}
fn main() {
let out1 =
serde_json::to_string(&ExampleEnum::Option1).expect("Unable to serialize ExampleEnum");
let out2 =
serde_json::to_string(&ExampleEnum::Option2).expect("Unable to serialize ExampleEnum");
let out3 =
serde_json::to_string(&ExampleEnum::Option3).expect("Unable to serialize ExampleEnum");
let out4 = serde_json::to_string(&ExampleEnum::AnotherOption)
.expect("Unable to serialize ExampleEnum");
println!("Serialized ExampleEnum::Option1: {}", out1);
println!("Serialized ExampleEnum::Option2: {}", out2);
println!("Serialized ExampleEnum::Option3: {}", out3);
println!("Serialized ExampleEnum::AnotherOption: {}", out4);
let in1 = serde_json::from_str::<ExampleEnum>(&*out1).expect("Unable to deserialize");
let in2 = serde_json::from_str::<ExampleEnum>(&*out2).expect("Unable to deserialize");
let in3 = serde_json::from_str::<ExampleEnum>(&*out3).expect("Unable to deserialize");
let in4 = serde_json::from_str::<ExampleEnum>(&*out4).expect("Unable to deserialize");
println!("Deserialized {}: {:?}", out1, in1);
println!("Deserialized {}: {:?}", out2, in2);
println!("Deserialized {}: {:?}", out3, in3);
println!("Deserialized {}: {:?}", out4, in4);
println!(
"Bad deserialized value {}: {:?}",
"\"bad_value\"",
serde_json::from_str::<ExampleEnum>("\"bad_value\"")
);
}
许可证
以下任一许可证下授权:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的工作内容将根据上述许可证双重授权,不附加任何额外条款或条件。
依赖关系
~0.7–1.3MB
~29K SLoC