`#[derive(IntoBytes)]` on generic enums emits code with an arity error.
jswrenn opened this issue · 0 comments
jswrenn commented
This:
#[derive(IntoBytes)]
#[repr(u8)]
enum MyEnum<T> {
Foo(T),
}
...expands to this:
unsafe impl<T> ::zerocopy::IntoBytes for MyEnum<T>
where
T: ::zerocopy::IntoBytes,
::zerocopy::util::macro_util::HasPadding<
MyEnum,
{
#[repr(u8)]
#[allow(dead_code)]
enum ___ZerocopyTag {
Foo,
}
false
|| ::zerocopy::util::macro_util::core_reexport::mem::size_of::<MyEnum>()
!= (::zerocopy::util::macro_util::core_reexport::mem::size_of::<
___ZerocopyTag,
>()
+ ::zerocopy::util::macro_util::core_reexport::mem::size_of::<
T,
>())
},
>: ::zerocopy::util::macro_util::ShouldBe<false>,
{
fn only_derive_is_allowed_to_implement_this_trait() {}
}
...in which MyEnum
is unparameterized in the where
bound. Consequently, a generic arity error is emitted.