@@ -443,7 +443,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
443
443
const ZERO_COPY_MISMATCH : bool = false ;
444
444
445
445
#[ 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 <( ) > {
447
447
// No-op code that however checks that all fields are zero-copy.
448
448
fn test<T : epserde:: traits:: ZeroCopy >( ) { }
449
449
#(
@@ -456,20 +456,20 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
456
456
#[ automatically_derived]
457
457
impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des
458
458
{
459
- fn _deserialize_full_inner(
459
+ unsafe fn _deserialize_full_inner(
460
460
backend: & mut impl epserde:: deser:: ReadWithPos ,
461
461
) -> core:: result:: Result <Self , epserde:: deser:: Error > {
462
462
use epserde:: deser:: DeserializeInner ;
463
- unsafe { epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend) }
463
+ epserde:: deser:: helpers:: deserialize_full_zero:: <Self >( backend)
464
464
}
465
465
466
466
type DeserType <' epserde_desertype> = & ' epserde_desertype #name<#concat_generics>;
467
467
468
- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
468
+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
469
469
backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
470
470
) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
471
471
{
472
- unsafe { epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend) }
472
+ epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend)
473
473
}
474
474
}
475
475
}
@@ -493,7 +493,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
493
493
const ZERO_COPY_MISMATCH : bool = ! #is_deep_copy #( && <#fields_types>:: IS_ZERO_COPY ) * ;
494
494
495
495
#[ 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 <( ) > {
497
497
epserde:: ser:: helpers:: check_mismatch:: <Self >( ) ;
498
498
#(
499
499
backend. write( stringify!( #fields_names) , & self . #fields_names) ?;
@@ -504,20 +504,20 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
504
504
505
505
#[ automatically_derived]
506
506
impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
507
- fn _deserialize_full_inner(
507
+ unsafe fn _deserialize_full_inner(
508
508
backend: & mut impl epserde:: deser:: ReadWithPos ,
509
509
) -> core:: result:: Result <Self , epserde:: deser:: Error > {
510
510
use epserde:: deser:: DeserializeInner ;
511
511
Ok ( #name{
512
512
#(
513
- #fields_names: <#fields_types>:: _deserialize_full_inner( backend) ?,
513
+ #fields_names: unsafe { <#fields_types>:: _deserialize_full_inner( backend) ? } ,
514
514
) *
515
515
} )
516
516
}
517
517
518
518
type DeserType <' epserde_desertype> = #name<#( #deser_type_generics, ) * >;
519
519
520
- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
520
+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
521
521
backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
522
522
) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
523
523
{
@@ -627,12 +627,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
627
627
} ) ;
628
628
variant_full_des. push ( quote ! {
629
629
#(
630
- #var_fields_names: <#var_fields_types>:: _deserialize_full_inner( backend) ?,
630
+ #var_fields_names: unsafe { <#var_fields_types>:: _deserialize_full_inner( backend) ? } ,
631
631
) *
632
632
} ) ;
633
633
variant_eps_des. push ( quote ! {
634
634
#(
635
- #var_fields_names: <#var_fields_types>:: #methods( backend) ?,
635
+ #var_fields_names: unsafe { <#var_fields_types>:: #methods( backend) ? } ,
636
636
) *
637
637
} ) ;
638
638
}
@@ -711,12 +711,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
711
711
} ) ;
712
712
variant_full_des. push ( quote ! {
713
713
#(
714
- #var_fields_vars : <#var_fields_types>:: _deserialize_full_inner( backend) ?,
714
+ #var_fields_vars : unsafe { <#var_fields_types>:: _deserialize_full_inner( backend) ? } ,
715
715
) *
716
716
} ) ;
717
717
variant_eps_des. push ( quote ! {
718
718
#(
719
- #var_fields_vars : <#var_fields_types>:: #methods( backend) ?,
719
+ #var_fields_vars : unsafe { <#var_fields_types>:: #methods( backend) ? } ,
720
720
) *
721
721
} ) ;
722
722
}
@@ -770,7 +770,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
770
770
// The type is declared as zero copy, so a fortiori there is no mismatch.
771
771
const ZERO_COPY_MISMATCH : bool = false ;
772
772
#[ 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 <( ) > {
774
774
// No-op code that however checks that all fields are zero-copy.
775
775
fn test<T : epserde:: traits:: ZeroCopy >( ) { }
776
776
#(
@@ -782,19 +782,19 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
782
782
783
783
#[ automatically_derived]
784
784
impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
785
- fn _deserialize_full_inner(
785
+ unsafe fn _deserialize_full_inner(
786
786
backend: & mut impl epserde:: deser:: ReadWithPos ,
787
787
) -> 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)
789
789
}
790
790
791
791
type DeserType <' epserde_desertype> = & ' epserde_desertype #name<#concat_generics>;
792
792
793
- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
793
+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
794
794
backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
795
795
) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
796
796
{
797
- unsafe { epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend) }
797
+ epserde:: deser:: helpers:: deserialize_eps_zero:: <Self >( backend)
798
798
}
799
799
}
800
800
}
@@ -817,7 +817,7 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
817
817
// and the attribute `deep_copy` is missing.
818
818
const ZERO_COPY_MISMATCH : bool = ! #is_deep_copy #( && <#fields_types>:: IS_ZERO_COPY ) * ;
819
819
#[ 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 <( ) > {
821
821
epserde:: ser:: helpers:: check_mismatch:: <Self >( ) ;
822
822
match self {
823
823
#(
@@ -829,11 +829,11 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
829
829
}
830
830
#[ automatically_derived]
831
831
impl <#generics_deserialize> epserde:: deser:: DeserializeInner for #name<#concat_generics> #where_clause_des {
832
- fn _deserialize_full_inner(
832
+ unsafe fn _deserialize_full_inner(
833
833
backend: & mut impl epserde:: deser:: ReadWithPos ,
834
834
) -> core:: result:: Result <Self , epserde:: deser:: Error > {
835
835
use epserde:: deser:: DeserializeInner ;
836
- match usize :: _deserialize_full_inner( backend) ? {
836
+ match unsafe { usize :: _deserialize_full_inner( backend) ? } {
837
837
#(
838
838
#tag => Ok ( Self :: #variants_names{ #variant_full_des } ) ,
839
839
) *
@@ -843,12 +843,12 @@ pub fn epserde_derive(input: TokenStream) -> TokenStream {
843
843
844
844
type DeserType <' epserde_desertype> = #name<#( #deser_type_generics, ) * >;
845
845
846
- fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
846
+ unsafe fn _deserialize_eps_inner<' deserialize_eps_inner_lifetime>(
847
847
backend: & mut epserde:: deser:: SliceWithPos <' deserialize_eps_inner_lifetime>,
848
848
) -> core:: result:: Result <Self :: DeserType <' deserialize_eps_inner_lifetime>, epserde:: deser:: Error >
849
849
{
850
850
use epserde:: deser:: DeserializeInner ;
851
- match usize :: _deserialize_full_inner( backend) ? {
851
+ match unsafe { usize :: _deserialize_full_inner( backend) ? } {
852
852
#(
853
853
#tag => Ok ( Self :: DeserType :: <' _>:: #variants_names{ #variant_eps_des } ) ,
854
854
) *
0 commit comments