idanarye/rust-smart-default

Rust macro for automatically generating default

Rust

157

53 commits

updated Dec 22, 2023

See the code

README

Build Status Latest Version Rust Documentation

Rust SmartDefault

Custom derive for automatically implementing the Default trait with customized default values:

use smart_default::SmartDefault;

#[derive(SmartDefault)]
enum Foo {
    Bar,
    #[default]
    Baz {
        #[default = 12]
        a: i32,
        b: i32,
        #[default(Some(Default::default()))]
        c: Option<i32>,
        #[default(_code = "vec![1, 2, 3]")]
        d: Vec<u32>,
        #[default = "four"]
        e: String,
    },
    Qux(i32),
}

assert!(Foo::default() == Foo::Baz {
    a: 12,
    b: 0,
    c: Some(0),
    d: vec![1, 2, 3],
    e: "four".to_owned(),
});

Requires Rust 1.30+ (for non-string values in attributes), and version 1.56 due to 2021 edition.

idanarye/rust-smart-default

Rust macro for automatically generating default

Rust

157

53 commits

updated Dec 22, 2023

See the code

README

Build Status Latest Version Rust Documentation

Rust SmartDefault

Custom derive for automatically implementing the Default trait with customized default values:

use smart_default::SmartDefault;

#[derive(SmartDefault)]
enum Foo {
    Bar,
    #[default]
    Baz {
        #[default = 12]
        a: i32,
        b: i32,
        #[default(Some(Default::default()))]
        c: Option<i32>,
        #[default(_code = "vec![1, 2, 3]")]
        d: Vec<u32>,
        #[default = "four"]
        e: String,
    },
    Qux(i32),
}

assert!(Foo::default() == Foo::Baz {
    a: 12,
    b: 0,
    c: Some(0),
    d: vec![1, 2, 3],
    e: "four".to_owned(),
});

Requires Rust 1.30+ (for non-string values in attributes), and version 1.56 due to 2021 edition.

Project health

Overall

3.9/10

Maintained

0/10

Code review

2/10
OpenSSF Scorecard

Significant stargazers

Luna Borowska

92 followers · starred Aug 2017

Chayim Refael Friedman

55 followers · starred Nov 2020

Alex Burka

81 followers · starred Aug 2017

Nikolai Vazquez

466 followers · starred Aug 2017