3个不稳定版本
| 0.2.0 | 2024年1月26日 |
|---|---|
| 0.1.1 | 2023年2月11日 |
| 0.1.0 | 2023年2月11日 |
623 在 编码 中排名
每月20,862 次下载
用于 7 个crate(6个直接使用)
10KB
56 行
serde-inline-default

一个小型crate,可以通过内联属性声明来设置Serde字段的默认值。
概述
这个crate是一种实现serde-rs/serde#368目的的方法。如果你想在纯serde中设置默认值,你必须创建一个函数,并用以下方式与之链接:#[serde)。这可能在你需要执行计算以获取默认值时是好的,但通常你只想将一个简单的整数或字符串作为默认值,并不得不创建一个整个函数来返回硬编码的值。
#[derive(Deserialize)]
struct Test {
#[serde(default = "value_default")]
value: u32
}
fn value_default() -> u32 { 42 }
如果您有很多字段,且每个字段都有很多(不同的)默认值,那么可能会变得相当混乱。这个crate通过提供#[serde_inline_default]过程宏来解决此问题。在结构体级别(在#[derive(Deserialize)]/#[derive(Serialize)]之前,否则将无法正确工作),您可以通过#[serde_inline_default(...)]在您的serde字段中设置默认值,而不需要创建额外的函数。
#[serde_inline_default]
#[derive(Deserialize)]
struct Test {
#[serde_inline_default(42)]
value: u32
}
内部,#[serde_inline_default(...)]被扩展为一个返回设置值的函数,并且该属性被替换为#[serde(default = "<function name>")]。因此,这个宏只是为您的代码提供一些语法糖,但如果您想要保持代码整洁或编写声明式宏/ macro_rules!,它将非常方便。
许可证
该项目可以在以下许可证中选择一个进行许可
- Apache许可证,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
依赖项
~315–770KB
~18K SLoC