constructor-macro
Cargo.toml
[dependencies]
constructor-macro = "0.4"
Example
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;
...