You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the concept of "newtypes" only refers to structs with a single field. This prevents the derives for working when the structure might have zero-width types like PhantomData for complier hints.
// This should work.#[derive(FromPrimitive)]structA<B>(u16,PhantomData<B>);
This behavior can be seen in #[repr(transparent)], where the annotation will work as long as there is only one non-zero-width type.
The text was updated successfully, but these errors were encountered:
AFAIK, we don't have any type information like size available in a proc macro, nor even path resolution to know that we're looking at core or std::marker::PhantomData in particular.
Maybe we could use an explicit "ignore" attribute though, akin to #[derivative(Hash="ignore")] or #[serde(skip)].
PS: Note that the nomicon description is incomplete -- the reference mentions that the other ZST fields must also have alignment 1 for #[repr(transparent)]. Alignment doesn't really matter for newtype derives though.
Currently, the concept of "newtypes" only refers to structs with a single field. This prevents the derives for working when the structure might have zero-width types like
PhantomData
for complier hints.This behavior can be seen in
#[repr(transparent)]
, where the annotation will work as long as there is only one non-zero-width type.The text was updated successfully, but these errors were encountered: