#constructor #macro #structs #macro-derive

macro constructor-macro

为结构体派生构造函数宏

5个不稳定版本

0.4.2 2019年7月30日
0.4.1 2019年7月30日
0.4.0 2019年7月30日
0.3.0 2019年6月9日
0.2.0 2019年6月8日

#50 in #constructor

MIT许可证

7KB
103 代码行

constructor-macro

Cargo.toml

[dependencies]
constructor-macro = "0.4"

示例

Rust 2018

use constructor_macro::ConstructorMacro;

#[derive(ConstructorMacro)]
pub struct Thing {
    #[default(1)]
    pub field1: i32,
    pub field2: i32,
}

fn main() {
    let thing1 = Thing!();
    assert_eq!(thing1.field1, 1);
    assert_eq!(thing1.field2, 0);

    let thing2 = Thing! { field1: 2 };
    assert_eq!(thing2.field1, 2);
    assert_eq!(thing2.field2, 0);

    let thing3 = Thing! {
        field1: 0,
        field2: 100,
    };
    assert_eq!(thing3.field1, 0);
    assert_eq!(thing3.field2, 100);
}

Rust 2015

#[macro_use]
extern crate constructor_macro;

...

依赖

~2MB
~46K SLoC