3 releases

0.1.2 Jan 5, 2024
0.1.1 Dec 1, 2023
0.1.0 Dec 1, 2023

#1371 in Parser implementations

34 downloads per month

Apache-2.0

17KB
479 lines

default-from-serde

Derive Default using serde::Deserialize! No mismatch between Default and Deserialize anymore!

Usage

Cargo.toml:

default-from-serde = "0.1"

See docs.rs for the Rust code.

License

APACHE-2.0.

Some source code are copied from serde_json. This library is practically deserialize using serde_json with {}.


lib.rs:

This crate provides a derive macro named SerdeDefault which derives Default from serde::Deserialize.

Usage

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");
}

Dependencies

~0.4–1MB
~23K SLoC