@@ -51,7 +51,7 @@ use crate::{
5151pub fn proc_macro_derive_avro_schema ( input : proc_macro:: TokenStream ) -> proc_macro:: TokenStream {
5252 let input = parse_macro_input ! ( input as DeriveInput ) ;
5353 derive_avro_schema ( input)
54- . unwrap_or_else ( to_compile_errors)
54+ . unwrap_or_else ( |errs| to_compile_errors ( errs . as_slice ( ) ) )
5555 . into ( )
5656}
5757
@@ -68,16 +68,16 @@ fn derive_avro_schema(input: DeriveInput) -> Result<TokenStream, Vec<syn::Error>
6868 let ( schema_def, record_fields) =
6969 get_struct_schema_def ( & named_type_options, data_struct, input. ident . span ( ) ) ?;
7070 (
71- handle_named_schemas ( named_type_options. name , schema_def) ,
71+ handle_named_schemas ( & named_type_options. name , & schema_def) ,
7272 record_fields,
7373 )
7474 } ;
7575 Ok ( create_trait_definition (
76- input. ident ,
76+ & input. ident ,
7777 & input. generics ,
78- get_schema_impl,
79- get_record_fields_impl,
80- named_type_options. default ,
78+ & get_schema_impl,
79+ & get_record_fields_impl,
80+ & named_type_options. default ,
8181 ) )
8282 }
8383 syn:: Data :: Enum ( data_enum) => {
@@ -89,14 +89,14 @@ fn derive_avro_schema(input: DeriveInput) -> Result<TokenStream, Vec<syn::Error>
8989 ) ] ) ;
9090 }
9191 let schema_def =
92- get_data_enum_schema_def ( & named_type_options, data_enum, input. ident . span ( ) ) ?;
93- let inner = handle_named_schemas ( named_type_options. name , schema_def) ;
92+ get_data_enum_schema_def ( & named_type_options, & data_enum, input. ident . span ( ) ) ?;
93+ let inner = handle_named_schemas ( & named_type_options. name , & schema_def) ;
9494 Ok ( create_trait_definition (
95- input. ident ,
95+ & input. ident ,
9696 & input. generics ,
97- inner,
98- quote ! { :: std:: option:: Option :: None } ,
99- named_type_options. default ,
97+ & inner,
98+ & quote ! { :: std:: option:: Option :: None } ,
99+ & named_type_options. default ,
100100 ) )
101101 }
102102 syn:: Data :: Union ( _) => Err ( vec ! [ syn:: Error :: new(
@@ -108,11 +108,11 @@ fn derive_avro_schema(input: DeriveInput) -> Result<TokenStream, Vec<syn::Error>
108108
109109/// Generate the trait definition with the correct generics
110110fn create_trait_definition (
111- ident : Ident ,
111+ ident : & Ident ,
112112 generics : & Generics ,
113- get_schema_impl : TokenStream ,
114- get_record_fields_impl : TokenStream ,
115- field_default_impl : TokenStream ,
113+ get_schema_impl : & TokenStream ,
114+ get_record_fields_impl : & TokenStream ,
115+ field_default_impl : & TokenStream ,
116116) -> TokenStream {
117117 let ( impl_generics, ty_generics, where_clause) = generics. split_for_impl ( ) ;
118118 quote ! {
@@ -134,7 +134,7 @@ fn create_trait_definition(
134134}
135135
136136/// Generate the code to check `named_schemas` if this schema already exist
137- fn handle_named_schemas ( full_schema_name : String , schema_def : TokenStream ) -> TokenStream {
137+ fn handle_named_schemas ( full_schema_name : & str , schema_def : & TokenStream ) -> TokenStream {
138138 quote ! {
139139 let name = :: apache_avro:: schema:: Name :: new_with_enclosing_namespace( #full_schema_name, enclosing_namespace) . expect( concat!( "Unable to parse schema name " , #full_schema_name) ) ;
140140 if named_schemas. contains( & name) {
@@ -448,15 +448,16 @@ fn type_to_field_default_expr(ty: &Type) -> Result<TokenStream, Vec<syn::Error>>
448448}
449449
450450/// Stolen from serde
451- fn to_compile_errors ( errors : Vec < syn:: Error > ) -> proc_macro2:: TokenStream {
451+ fn to_compile_errors ( errors : & [ syn:: Error ] ) -> proc_macro2:: TokenStream {
452452 let compile_errors = errors. iter ( ) . map ( syn:: Error :: to_compile_error) ;
453453 quote ! ( #( #compile_errors) * )
454454}
455455
456456fn preserve_optional ( op : Option < impl quote:: ToTokens > ) -> TokenStream {
457- match op {
458- Some ( tt) => quote ! { :: std:: option:: Option :: Some ( #tt. into( ) ) } ,
459- None => quote ! { :: std:: option:: Option :: None } ,
457+ if let Some ( tt) = op {
458+ quote ! { :: std:: option:: Option :: Some ( #tt. into( ) ) }
459+ } else {
460+ quote ! { :: std:: option:: Option :: None }
460461 }
461462}
462463
0 commit comments