3个不稳定版本

0.2.0 2024年1月26日
0.1.1 2023年2月11日
0.1.0 2023年2月11日

623编码 中排名

Download history 1724/week @ 2024-04-09 1910/week @ 2024-04-16 1941/week @ 2024-04-23 1902/week @ 2024-04-30 4449/week @ 2024-05-07 5886/week @ 2024-05-14 4351/week @ 2024-05-21 5394/week @ 2024-05-28 3615/week @ 2024-06-04 5145/week @ 2024-06-11 5778/week @ 2024-06-18 5545/week @ 2024-06-25 4517/week @ 2024-07-02 5670/week @ 2024-07-09 4340/week @ 2024-07-16 5443/week @ 2024-07-23

每月20,862 次下载
用于 7 个crate(6个直接使用)

MIT/Apache

10KB
56

serde-inline-default ci crates.io docs

一个小型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!,它将非常方便。

许可证

该项目可以在以下许可证中选择一个进行许可

依赖项

~315–770KB
~18K SLoC