#serde-default #serde-derive #derive-deserialize

无需 std default-from-serde

使用 #[serde(default)] 推导默认值

4 个版本

新增 0.1.3 2024年8月8日
0.1.2 2024年1月5日
0.1.1 2023年12月1日
0.1.0 2023年12月1日

#1468解析器实现

每月 32 次下载

Apache-2.0

14KB
365 代码行

default-from-serde

使用 Default 推导 serde::DeserializeDefaultDeserialize 之间不再存在不匹配!

用法

Cargo.toml:

default-from-serde = "0.1"

有关 Rust 代码,请参阅 docs.rs

许可证

APACHE-2.0。

部分源代码来自 serde_json。该库实际上使用 serde_json{} 进行反序列化。


lib.rs:

此软件包提供了一个名为 SerdeDefault 的推导宏,它从 serde::Deserialize 推导出 Default

用法

use default_from_serde::SerdeDefault;

#[derive(SerdeDefault, Deserialize)]
pub struct ComplexTypewithDefault {
    #[serde(default)]
    pub a: i32,
    #[serde(default = "default_b")]
    pub b: String,
    #[serde(default)]
    pub c: Vec<i32>,
}

fn default_b() -> String {
    "default".to_string()
}

fn main() {
    let x = ComplexTypewithDefault::default();

    assert_eq!(x.b, "default");
}

依赖关系

~0.4–1MB
~22K SLoC