@@ -443,7 +443,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
443443 const ZERO_COPY_MISMATCH : bool = false ;
444444
445445 #[ inline( always) ]
446- fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
446+ unsafe fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
447447 // No-op code that however checks that all fields are zero-copy.
448448 fn test<T : epserde:: traits:: ZeroCopy >( ) { }
449449 #(
@@ -456,20 +456,20 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
456456 #[ automatically_derived]
457457 impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des
458458 {
459- fn _deserialize_full_inner(
459+ unsafe fn _deserialize_full_inner(
460460 backend: & mut impl epserde:: deser:: ReadWithPos ,
461461 ) -> core:: result:: Result <Self , epserde:: deser:: Error > {
462462 use epserde:: deser:: DeserializeInner ;
463- unsafe { epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend) }
463+ epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend)
464464 }
465465
466466 type DeserType <' epserde_desertype> = & ' epserde_desertype #name<#concat_generics>;
467467
468- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
468+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
469469 backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
470470 ) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
471471 {
472- unsafe { epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend) }
472+ epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend)
473473 }
474474 }
475475 }
@@ -493,7 +493,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
493493 const ZERO_COPY_MISMATCH : bool = ! #is_deep_copy #( && <#fields_types>:: IS_ZERO_COPY ) * ;
494494
495495 #[ inline( always) ]
496- fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
496+ unsafe fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
497497 epserde:: ser:: helpers:: check_mismatch:: <Self >( ) ;
498498 #(
499499 backend. write( stringify!( #fields_names) , & self . #fields_names) ?;
@@ -504,20 +504,20 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
504504
505505 #[ automatically_derived]
506506 impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
507- fn _deserialize_full_inner(
507+ unsafe fn _deserialize_full_inner(
508508 backend: & mut impl epserde:: deser:: ReadWithPos ,
509509 ) -> core:: result:: Result <Self , epserde:: deser:: Error > {
510510 use epserde:: deser:: DeserializeInner ;
511511 Ok ( #name{
512512 #(
513- #fields_names: <#fields_types>:: _deserialize_full_inner( backend) ?,
513+ #fields_names: unsafe { <#fields_types>:: _deserialize_full_inner( backend) ? } ,
514514 ) *
515515 } )
516516 }
517517
518518 type DeserType <' epserde_desertype> = #name<#( #deser_type_generics, ) * >;
519519
520- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
520+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
521521 backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
522522 ) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
523523 {
@@ -627,12 +627,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
627627 } ) ;
628628 variant_full_des. push ( quote ! {
629629 #(
630- #var_fields_names: <#var_fields_types>:: _deserialize_full_inner( backend) ?,
630+ #var_fields_names: unsafe { <#var_fields_types>:: _deserialize_full_inner( backend) ? } ,
631631 ) *
632632 } ) ;
633633 variant_eps_des. push ( quote ! {
634634 #(
635- #var_fields_names: <#var_fields_types>:: #methods( backend) ?,
635+ #var_fields_names: unsafe { <#var_fields_types>:: #methods( backend) ? } ,
636636 ) *
637637 } ) ;
638638 }
@@ -711,12 +711,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
711711 } ) ;
712712 variant_full_des. push ( quote ! {
713713 #(
714- #var_fields_vars : <#var_fields_types>:: _deserialize_full_inner( backend) ?,
714+ #var_fields_vars : unsafe { <#var_fields_types>:: _deserialize_full_inner( backend) ? } ,
715715 ) *
716716 } ) ;
717717 variant_eps_des. push ( quote ! {
718718 #(
719- #var_fields_vars : <#var_fields_types>:: #methods( backend) ?,
719+ #var_fields_vars : unsafe { <#var_fields_types>:: #methods( backend) ? } ,
720720 ) *
721721 } ) ;
722722 }
@@ -770,7 +770,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
770770 // The type is declared as zero copy, so a fortiori there is no mismatch.
771771 const ZERO_COPY_MISMATCH : bool = false ;
772772 #[ inline( always) ]
773- fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
773+ unsafe fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
774774 // No-op code that however checks that all fields are zero-copy.
775775 fn test<T : epserde:: traits:: ZeroCopy >( ) { }
776776 #(
@@ -782,19 +782,19 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
782782
783783 #[ automatically_derived]
784784 impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
785- fn _deserialize_full_inner(
785+ unsafe fn _deserialize_full_inner(
786786 backend: & mut impl epserde:: deser:: ReadWithPos ,
787787 ) -> core:: result:: Result <Self , epserde:: deser:: Error > {
788- unsafe { epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend) }
788+ epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend)
789789 }
790790
791791 type DeserType <' epserde_desertype> = & ' epserde_desertype #name<#concat_generics>;
792792
793- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
793+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
794794 backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
795795 ) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
796796 {
797- unsafe { epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend) }
797+ epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend)
798798 }
799799 }
800800 }
@@ -817,7 +817,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
817817 // and the attribute `deep_copy` is missing.
818818 const ZERO_COPY_MISMATCH : bool = ! #is_deep_copy #( && <#fields_types>:: IS_ZERO_COPY ) * ;
819819 #[ inline( always) ]
820- fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
820+ unsafe fn _serialize_inner( & self , backend: & mut impl epserde:: ser:: WriteWithNames ) -> epserde:: ser:: Result <( ) > {
821821 epserde:: ser:: helpers:: check_mismatch:: <Self >( ) ;
822822 match self {
823823 #(
@@ -829,11 +829,11 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
829829 }
830830 #[ automatically_derived]
831831 impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
832- fn _deserialize_full_inner(
832+ unsafe fn _deserialize_full_inner(
833833 backend: & mut impl epserde:: deser:: ReadWithPos ,
834834 ) -> core:: result:: Result <Self , epserde:: deser:: Error > {
835835 use epserde:: deser:: DeserializeInner ;
836- match usize :: _deserialize_full_inner( backend) ? {
836+ match unsafe { usize :: _deserialize_full_inner( backend) ? } {
837837 #(
838838 #tag => Ok ( Self :: #variants_names{ #variant_full_des } ) ,
839839 ) *
@@ -843,12 +843,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
843843
844844 type DeserType <' epserde_desertype> = #name<#( #deser_type_generics, ) * >;
845845
846- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
846+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
847847 backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
848848 ) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
849849 {
850850 use epserde:: deser:: DeserializeInner ;
851- match usize :: _deserialize_full_inner( backend) ? {
851+ match unsafe { usize :: _deserialize_full_inner( backend) ? } {
852852 #(
853853 #tag => Ok ( Self :: DeserType :: <' _>:: #variants_names{ #variant_eps_des } ) ,
854854 ) *
0 commit comments