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;