Expand description
A macro for generating a merged struct from multiple sub-structs.
§Example
use multi_structs::multi_structs;
multi_structs! {
/// The merged struct.
#[derive(Debug)]
pub struct Merged {
/// Foo
#[derive(Debug)]
pub foo: struct Foo {
/// a
pub a: i32,
/// b
pub b: i64,
}
/// Bar
#[derive(Debug)]
pub bar: struct Bar {
/// c
pub c: usize,
/// d
pub d: String,
}
}
}
fn main() {
let foo = Foo { a: 1, b: 2 };
let bar = Bar { c: 3, d: "aaa".to_string() };
println!("{:?}, {:?}", foo, bar);
let merged = Merged::new(foo, bar);
println!("{:?}", merged);
let (foo, bar) = merged.split();
println!("{:?}, {:?}", foo, bar);
}
See example_generated
for
documentation of code generated by the above multi_structs!
expansion.
§Attributes
Attributes can be attached to any struct and field involved.
§Methods
The following methods are defined for the merged struct:
new
: create the new merged struct from multiple sub-structs.split
: split the merged struct into the sub-structs.
§Visibility
The visibility of structs and fields is taken directly from their definitions. For the
generated methods new
and split
, the visibility of the merged struct is assumed.
Modules§
- example_
generated - This module shows an example of code generated by the macro. IT MUST NOT BE USED OUTSIDE THIS CRATE.