Pod

Trait Pod 

Source
pub unsafe trait Pod: 'static { }
Expand description

Types whose values can be safely transmuted between byte arrays of the same size.

§Safety

It must be safe to transmute between any byte array (with length equal to the size of the type) and Self.

This is true for these primitive types: i8, i16, i32, i64, i128, u8, u16, u32, u64, u128, f32, f64. The raw pointer types are not pod under strict provenance rules but can be through the ‘int2ptr’ feature. Primitives such as str and bool are not pod because not every valid byte pattern is a valid instance of these types. References or types with lifetimes are never pod.

Arrays and slices of pod types are also pod themselves.

Note that it is legal for pod types to be a ZST.

When Pod is implemented for a user defined type it must meet the following requirements:

  • Must be annotated with #[repr(C)] or #[repr(transparent)].
  • Must have every field’s type implement Pod itself.
  • Must not have any padding between its fields, define dummy fields to cover the padding.

§Derive macro

To help with safely implementing this trait for user defined types, a derive macro is provided to implement the Pod trait if the requirements are satisfied.

Implementations on Foreign Types§

Source§

impl Pod for f32

Source§

impl Pod for f64

Source§

impl Pod for i8

Source§

impl Pod for i16

Source§

impl Pod for i32

Source§

impl Pod for i64

Source§

impl Pod for i128

Source§

impl Pod for isize

Source§

impl Pod for u8

Source§

impl Pod for u16

Source§

impl Pod for u32

Source§

impl Pod for u64

Source§

impl Pod for u128

Source§

impl Pod for ()

Source§

impl Pod for usize

Source§

impl<T> Pod for [T]
where T: Pod,

Source§

impl<T> Pod for PhantomData<T>
where T: 'static,

Source§

impl<T, const N: usize> Pod for [T; N]
where T: Pod,

Implementors§

Source§

impl Pod for DataView

Source§

impl Pod for FPO_DATA

Source§

impl Pod for GUID

Source§

impl Pod for IMAGE_BASE_RELOCATION

Source§

impl Pod for IMAGE_DATA_DIRECTORY

Source§

impl Pod for IMAGE_DEBUG_CV_INFO_PDB20

Source§

impl Pod for IMAGE_DEBUG_CV_INFO_PDB70

Source§

impl Pod for IMAGE_DEBUG_DIRECTORY

Source§

impl Pod for IMAGE_DEBUG_MISC

Source§

impl Pod for IMAGE_DEBUG_VC_FEATURE

Source§

impl Pod for IMAGE_DOS_HEADER

Source§

impl Pod for IMAGE_DYNAMIC_RELOCATION32

Source§

impl Pod for IMAGE_DYNAMIC_RELOCATION64

Source§

impl Pod for IMAGE_DYNAMIC_RELOCATION_TABLE

Source§

impl Pod for IMAGE_EXPORT_DIRECTORY

Source§

impl Pod for IMAGE_FILE_HEADER

Source§

impl Pod for IMAGE_GUARDCF32

Source§

impl Pod for IMAGE_GUARDCF64

Source§

impl Pod for IMAGE_IMPORT_DESCRIPTOR

Source§

impl Pod for IMAGE_LOAD_CONFIG_CODE_INTEGRITY

Source§

impl Pod for IMAGE_LOAD_CONFIG_DIRECTORY32

Source§

impl Pod for IMAGE_LOAD_CONFIG_DIRECTORY64

Source§

impl Pod for IMAGE_NT_HEADERS32

Source§

impl Pod for IMAGE_NT_HEADERS64

Source§

impl Pod for IMAGE_OPTIONAL_HEADER32

Source§

impl Pod for IMAGE_OPTIONAL_HEADER64

Source§

impl Pod for IMAGE_RESOURCE_DATA_ENTRY

Source§

impl Pod for IMAGE_RESOURCE_DIRECTORY

Source§

impl Pod for IMAGE_RESOURCE_DIRECTORY_ENTRY

Source§

impl Pod for IMAGE_SECTION_HEADER

Source§

impl Pod for IMAGE_TLS_DIRECTORY32

Source§

impl Pod for IMAGE_TLS_DIRECTORY64

Source§

impl Pod for RUNTIME_FUNCTION

Source§

impl Pod for SCOPE_RECORD

Source§

impl Pod for SCOPE_TABLE

Source§

impl Pod for UNWIND_CODE

Source§

impl Pod for UNWIND_INFO

Source§

impl Pod for VS_FIXEDFILEINFO

Source§

impl Pod for VS_VERSION

Source§

impl Pod for WIN_CERTIFICATE

Source§

impl Pod for CatchableType

Source§

impl Pod for CatchableTypeArray

Source§

impl Pod for ESTypeList

Source§

impl Pod for FuncInfo

Source§

impl Pod for HandlerType

Source§

impl Pod for pelite::pe32::msvc::PMD

Source§

impl Pod for pelite::pe32::msvc::RTTIBaseClassDescriptor

Source§

impl Pod for pelite::pe32::msvc::RTTIClassHierarchyDescriptor

Source§

impl Pod for pelite::pe32::msvc::RTTICompleteObjectLocator

Source§

impl Pod for ThrowInfo

Source§

impl Pod for TryBlockMapEntry

Source§

impl Pod for pelite::pe32::msvc::TypeDescriptor

Source§

impl Pod for UnwindMapEntry

Source§

impl Pod for SectionHeader

Source§

impl Pod for SectionHeaders

Source§

impl Pod for pelite::pe64::msvc::PMD

Source§

impl Pod for pelite::pe64::msvc::RTTIBaseClassDescriptor

Source§

impl Pod for pelite::pe64::msvc::RTTIClassHierarchyDescriptor

Source§

impl Pod for pelite::pe64::msvc::RTTICompleteObjectLocator

Source§

impl Pod for pelite::pe64::msvc::TypeDescriptor

Source§

impl Pod for GRPICONDIR

Source§

impl Pod for GRPICONDIRENTRY

Source§

impl Pod for Language

Source§

impl<T: Pod> Pod for IMAGE_VERSION<T>

Source§

impl<T: ?Sized> Pod for pelite::pe32::Ptr<T>
where Ptr<T>: 'static,

Source§

impl<T: ?Sized> Pod for pelite::pe64::Ptr<T>
where Ptr<T>: 'static,