use crate::b::B; pub mod b { use struct_convert::Convert; #[derive(Debug, PartialEq)] pub struct B { pub bid: i64, pub num: String, pub name: String, } } pub mod a1 { use struct_convert::Convert; #[derive(Debug, Convert, PartialEq)] #[convert(into = "crate::b::B")] pub struct A { #[convert_field(into="crate::b::B", rename = "bid")] pub id: i64, #[convert_field(to_string)] pub num: i64, #[convert_field(unwrap)] pub name: Option, } } pub mod a2 { use struct_convert::Convert; #[derive(Debug, Convert, PartialEq)] #[convert(into = "crate :: b :: B")] pub struct A { #[convert_field(into="crate :: b :: B", rename = "bid")] pub id: i64, #[convert_field(to_string)] pub num: i64, #[convert_field(unwrap)] pub name: Option, } } pub mod a3 { use struct_convert::Convert; #[derive(Debug, Convert, PartialEq)] #[convert(into = " crate::b :: B")] pub struct A { #[convert_field(into=" crate::b :: B", rename = "bid")] pub id: i64, #[convert_field(to_string)] pub num: i64, #[convert_field(unwrap)] pub name: Option, } } fn main() { } #[test] fn test_sample_a1() { let a = a1::A { id: 2, num: 1, name: Some("Jack".to_string()), }; let bval: b::B = a.into(); debug_assert_eq!( B { num: "1".to_string(), bid: 2, name: "Jack".to_string(), }, bval ); } #[test] fn test_sample_a2() { let a = a2::A { id: 2, num: 1, name: Some("Jack".to_string()), }; let bval: b::B = a.into(); debug_assert_eq!( B { num: "1".to_string(), bid: 2, name: "Jack".to_string(), }, bval ); } #[test] fn test_sample_a3() { let a = a3::A { id: 2, num: 1, name: Some("Jack".to_string()), }; let bval: b::B = a.into(); debug_assert_eq!( B { num: "1".to_string(), bid: 2, name: "Jack".to_string(), }, bval ); }