structmapper/lib.rs
1//! # StructMapper
2//!
3//! A library to help you generate code that mapped one struct to another.
4//!
5//! # Example
6//! ```
7//! use structmapper::StructMapper;
8//!
9//! struct From1 {
10//! value: i32,
11//! }
12//!
13//! struct From2 {
14//! value: i32,
15//! }
16//!
17//! struct From3 {
18//! value: i32,
19//! }
20//!
21//! #[derive(StructMapper)]
22//! #[struct_mapper(from_type = "From1")]
23//! #[struct_mapper(from_type = "From2")]
24//! #[struct_mapper(
25//! from_type = "(From1, From2, From3)",
26//! default_base = "{0}",
27//! fields(
28//! value = "{0.value} + {1.value} + {2.value}"
29//! )
30//! )]
31//! struct To {
32//! value: i32
33//! }
34//!
35//! let to = To::from(From1 { value: 1 });
36//! assert_eq!(to.value, 1);
37//!
38//! let to = To::from(From2 { value: 2 });
39//! assert_eq!(to.value, 2);
40//!
41//! let to = To::from((From1 { value: 1 }, From2 { value: 2 }, From3 { value: 3 }));
42//! assert_eq!(to.value, 1 + 2 + 3);
43//! ```
44
45pub use structmapper_codegen::StructMapper;