#[derive(Pod)]Expand description
Auto derive the Pod trait for structs.
The type is checked for requirements of the Pod trait:
-
Be annotated with
repr(C)orrepr(transparent). -
Have every field’s type implement
Poditself. -
Not have any padding between its fields.
§Compile errors
Error reporting is not very ergonomic due to how errors are detected:
-
error[E0277]: the trait bound $TYPE: Pod is not satisfiedThe struct contains a field whose type does not implement
Pod. -
error[E0512]: cannot transmute between types of different sizes, or dependently-sized typesThis error means your struct has padding as its size is not equal to a byte array of length equal to the sum of the size of its fields.
-
error: no rules expected the token <The struct contains generic parameters which are not supported. It may still be possible to manually implement
Podbut extra care should be taken to ensure its invariants are upheld.
§Remarks:
This custom derive macro is required because the dataview proc macro searches for ::dataview::derive_pod!(). See https://github.com/CasualX/dataview/blob/master/derive_pod/lib.rs for the original implementation.