Crate multi_structs [−] [src]
A macro for generating a merged struct from multiple sub-structs.
Example
#[macro_use] extern crate multi_structs; multi_structs! { /// The merged struct. #[derive(Debug)] struct Merged { /// Foo #[derive(Debug)] foo: struct Foo { /// a a: i32, /// b b: i64, } /// Bar #[derive(Debug)] bar: struct Bar { /// c c: usize, /// d 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.
Visibility
All structs and fields involved are currently pub
. This will
likely gets changed in the future.
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.
Modules
example_generated |
This module shows an example of code generated by the macro. IT MUST NOT BE USED OUTSIDE THIS CRATE. |
Macros
multi_structs |