diff --git a/derive/src/traits.rs b/derive/src/traits.rs index 91296b8..dd425dc 100644 --- a/derive/src/traits.rs +++ b/derive/src/traits.rs @@ -210,17 +210,16 @@ fn generate_assert_no_padding( input: &DeriveInput, ) -> Result { let struct_type = &input.ident; - let span = input.span(); + let span = input.ident.span(); let fields = get_struct_fields(input)?; let field_types = get_field_types(&fields); - let struct_size = - quote_spanned!(span => ::core::mem::size_of::<#struct_type>()); let size_sum = quote_spanned!(span => 0 #( + ::core::mem::size_of::<#field_types>() )*); Ok(quote_spanned! {span => const _: fn() = || { - let _ = ::core::mem::transmute::<[u8; #struct_size], [u8; #size_sum]>; + struct TypeWithoutPadding([u8; #size_sum]); + let _ = ::core::mem::transmute::<#struct_type, TypeWithoutPadding>; };}) }