@@ -30,15 +30,17 @@ mod parse;
3030pub fn derive_ser_bin ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
3131 let input = parse:: parse_data ( input) ;
3232
33+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
34+
3335 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
34- return derive_ser_bin_proxy ( & proxy, input. name ( ) ) ;
36+ return derive_ser_bin_proxy ( & proxy, input. name ( ) , crate_name ) ;
3537 }
3638
3739 // ok we have an ident, its either a struct or a enum
3840 match & input {
39- parse:: Data :: Struct ( struct_) if struct_. named => derive_ser_bin_struct ( struct_) ,
40- parse:: Data :: Struct ( struct_) => derive_ser_bin_struct_unnamed ( struct_) ,
41- parse:: Data :: Enum ( enum_) => derive_ser_bin_enum ( enum_) ,
41+ parse:: Data :: Struct ( struct_) if struct_. named => derive_ser_bin_struct ( struct_, crate_name ) ,
42+ parse:: Data :: Struct ( struct_) => derive_ser_bin_struct_unnamed ( struct_, crate_name ) ,
43+ parse:: Data :: Enum ( enum_) => derive_ser_bin_enum ( enum_, crate_name ) ,
4244 _ => unimplemented ! ( "Only structs and enums are supported" ) ,
4345 }
4446}
@@ -48,15 +50,17 @@ pub fn derive_ser_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream
4850pub fn derive_de_bin ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
4951 let input = parse:: parse_data ( input) ;
5052
53+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
54+
5155 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
52- return derive_de_bin_proxy ( & proxy, input. name ( ) ) ;
56+ return derive_de_bin_proxy ( & proxy, input. name ( ) , crate_name ) ;
5357 }
5458
5559 // ok we have an ident, its either a struct or a enum
5660 match & input {
57- parse:: Data :: Struct ( struct_) if struct_. named => derive_de_bin_struct ( struct_) ,
58- parse:: Data :: Struct ( struct_) => derive_de_bin_struct_unnamed ( struct_) ,
59- parse:: Data :: Enum ( enum_) => derive_de_bin_enum ( enum_) ,
61+ parse:: Data :: Struct ( struct_) if struct_. named => derive_de_bin_struct ( struct_, crate_name ) ,
62+ parse:: Data :: Struct ( struct_) => derive_de_bin_struct_unnamed ( struct_, crate_name ) ,
63+ parse:: Data :: Enum ( enum_) => derive_de_bin_enum ( enum_, crate_name ) ,
6064
6165 _ => unimplemented ! ( "Only structs and enums are supported" ) ,
6266 }
@@ -67,15 +71,17 @@ pub fn derive_de_bin(input: proc_macro::TokenStream) -> proc_macro::TokenStream
6771pub fn derive_ser_ron ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
6872 let input = parse:: parse_data ( input) ;
6973
74+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
75+
7076 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
71- return derive_ser_ron_proxy ( & proxy, input. name ( ) ) ;
77+ return derive_ser_ron_proxy ( & proxy, input. name ( ) , crate_name ) ;
7278 }
7379
7480 // ok we have an ident, its either a struct or a enum
7581 match & input {
76- parse:: Data :: Struct ( struct_) if struct_. named => derive_ser_ron_struct ( struct_) ,
77- parse:: Data :: Struct ( struct_) => derive_ser_ron_struct_unnamed ( struct_) ,
78- parse:: Data :: Enum ( enum_) => derive_ser_ron_enum ( enum_) ,
82+ parse:: Data :: Struct ( struct_) if struct_. named => derive_ser_ron_struct ( struct_, crate_name ) ,
83+ parse:: Data :: Struct ( struct_) => derive_ser_ron_struct_unnamed ( struct_, crate_name ) ,
84+ parse:: Data :: Enum ( enum_) => derive_ser_ron_enum ( enum_, crate_name ) ,
7985 _ => unimplemented ! ( "Only structs and enums are supported" ) ,
8086 }
8187}
@@ -85,15 +91,17 @@ pub fn derive_ser_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream
8591pub fn derive_de_ron ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
8692 let input = parse:: parse_data ( input) ;
8793
94+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
95+
8896 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
89- return derive_de_ron_proxy ( & proxy, input. name ( ) ) ;
97+ return derive_de_ron_proxy ( & proxy, input. name ( ) , crate_name ) ;
9098 }
9199
92100 // ok we have an ident, its either a struct or a enum
93101 match & input {
94- parse:: Data :: Struct ( struct_) if struct_. named => derive_de_ron_struct ( struct_) ,
95- parse:: Data :: Struct ( struct_) => derive_de_ron_struct_unnamed ( struct_) ,
96- parse:: Data :: Enum ( enum_) => derive_de_ron_enum ( enum_) ,
102+ parse:: Data :: Struct ( struct_) if struct_. named => derive_de_ron_struct ( struct_, crate_name ) ,
103+ parse:: Data :: Struct ( struct_) => derive_de_ron_struct_unnamed ( struct_, crate_name ) ,
104+ parse:: Data :: Enum ( enum_) => derive_de_ron_enum ( enum_, crate_name ) ,
97105 _ => unimplemented ! ( "Only structs and enums are supported" ) ,
98106 }
99107}
@@ -103,15 +111,19 @@ pub fn derive_de_ron(input: proc_macro::TokenStream) -> proc_macro::TokenStream
103111pub fn derive_ser_json ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
104112 let input = parse:: parse_data ( input) ;
105113
114+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
115+
106116 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
107- return derive_ser_json_proxy ( & proxy, input. name ( ) ) ;
117+ return derive_ser_json_proxy ( & proxy, input. name ( ) , crate_name ) ;
108118 }
109119
110120 // ok we have an ident, its either a struct or a enum
111121 match & input {
112- parse:: Data :: Struct ( struct_) if struct_. named => derive_ser_json_struct ( struct_) ,
113- parse:: Data :: Struct ( struct_) => derive_ser_json_struct_unnamed ( struct_) ,
114- parse:: Data :: Enum ( enum_) => derive_ser_json_enum ( enum_) ,
122+ parse:: Data :: Struct ( struct_) if struct_. named => {
123+ derive_ser_json_struct ( struct_, crate_name)
124+ }
125+ parse:: Data :: Struct ( struct_) => derive_ser_json_struct_unnamed ( struct_, crate_name) ,
126+ parse:: Data :: Enum ( enum_) => derive_ser_json_enum ( enum_, crate_name) ,
115127 _ => unimplemented ! ( "" ) ,
116128 }
117129}
@@ -121,15 +133,17 @@ pub fn derive_ser_json(input: proc_macro::TokenStream) -> proc_macro::TokenStrea
121133pub fn derive_de_json ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
122134 let input = parse:: parse_data ( input) ;
123135
136+ let crate_name = shared:: attrs_crate ( input. attributes ( ) ) . unwrap_or ( "nanoserde" ) ;
137+
124138 if let Some ( proxy) = shared:: attrs_proxy ( input. attributes ( ) ) {
125- return derive_de_json_proxy ( & proxy, input. name ( ) ) ;
139+ return derive_de_json_proxy ( & proxy, input. name ( ) , crate_name ) ;
126140 }
127141
128142 // ok we have an ident, its either a struct or a enum
129143 match & input {
130- parse:: Data :: Struct ( struct_) if struct_. named => derive_de_json_struct ( struct_) ,
131- parse:: Data :: Struct ( struct_) => derive_de_json_struct_unnamed ( struct_) ,
132- parse:: Data :: Enum ( enum_) => derive_de_json_enum ( enum_) ,
144+ parse:: Data :: Struct ( struct_) if struct_. named => derive_de_json_struct ( struct_, crate_name ) ,
145+ parse:: Data :: Struct ( struct_) => derive_de_json_struct_unnamed ( struct_, crate_name ) ,
146+ parse:: Data :: Enum ( enum_) => derive_de_json_enum ( enum_, crate_name ) ,
133147 parse:: Data :: Union ( _) => unimplemented ! ( "Unions are not supported" ) ,
134148 }
135149}
0 commit comments