default! macro for Rust
Sometimes you want to create nested structures, set values for some the fields and use default value for most of the other, for example:
use default_macro::default;
#[derive(Default)]
struct Window { title: &str, border: Border, /* 10 other fields */ }
#[derive(Default)]
struct Border { width: f64, /* 5 other fields*/ }
fn foo() {
let w1 = Window {
title: "Test",
border: Border {
width: 10.0,
..Border::Default},
..Window::default()
};
// with the macros:
let w2 = default!( Window {
title: "Test",
border: Border { width: 10.0}
});
}