[]Trait lodepng::Pod

pub unsafe trait Pod: 'static + Zeroable + Copy { }

Marker trait for "plain old data".

The point of this trait is that once something is marked "plain old data" you can really go to town with the bit fiddling and bit casting. Therefore, it's a relatively strong claim to make about a type. Do not add this to your type casually.

Reminder: The results of casting around bytes between data types are endian dependant. Little-endian machines are the most common, but big-endian machines do exist (and big-endian is also used for "network order" bytes).

Safety

  • The type must be inhabited (eg: no Infallible).
  • The type must allow any bit pattern (eg: no bool or char, which have illegal bit patterns).
  • The type must not contain any padding bytes, either in the middle or on the end (eg: no #[repr(C)] struct Foo(u8, u16), which has padding in the middle, and also no #[repr(C)] struct Foo(u16, u8), which has padding on the end).
  • The type needs to have all fields also be Pod.
  • The type needs to be repr(C) or repr(transparent). In the case of repr(C), the packed and align repr modifiers can be used as long as all other rules end up being followed.

Implementations on Foreign Types

impl<T> Pod for BGR<T> where
    T: Pod
[src]

impl<T, A> Pod for RGBA<T, A> where
    T: Pod,
    A: Pod
[src]

impl<T, A> Pod for BGRA<T, A> where
    T: Pod,
    A: Pod
[src]

impl<T> Pod for [T; 48] where
    T: Pod

impl Pod for i8

impl<T> Pod for [T; 256] where
    T: Pod

impl<T> Pod for ManuallyDrop<T> where
    T: Pod

impl<T> Pod for [T; 24] where
    T: Pod

impl<T> Pod for [T; 64] where
    T: Pod

impl Pod for __m256i

impl<T> Pod for [T; 27] where
    T: Pod

impl<T> Pod for [T; 25] where
    T: Pod

impl<T> Pod for [T; 18] where
    T: Pod

impl Pod for u16

impl<T> Pod for [T; 20] where
    T: Pod

impl<T> Pod for [T; 19] where
    T: Pod

impl Pod for __m128

impl Pod for Option<NonZeroI16>

impl<T> Pod for [T; 21] where
    T: Pod

impl Pod for i64

impl Pod for u128

impl<T> Pod for *mut T where
    T: 'static, 

impl<T> Pod for [T; 96] where
    T: Pod

impl<T> Pod for [T; 5] where
    T: Pod

impl Pod for __m128d

impl Pod for i16

impl<T> Pod for [T; 16] where
    T: Pod

impl Pod for isize

impl<T> Pod for [T; 9] where
    T: Pod

impl Pod for u8

impl Pod for Option<NonZeroUsize>

impl<T> Pod for [T; 29] where
    T: Pod

impl<T> Pod for Wrapping<T> where
    T: Pod

impl Pod for i128

impl<T> Pod for [T; 512] where
    T: Pod

impl<T> Pod for [T; 23] where
    T: Pod

impl Pod for i32

impl Pod for Option<NonZeroI128>

impl<T> Pod for *const T where
    T: 'static, 

impl Pod for Option<NonZeroI32>

impl Pod for __m256

impl<T> Pod for [T; 1] where
    T: Pod

impl<T> Pod for [T; 28] where
    T: Pod

impl<T> Pod for [T; 4] where
    T: Pod

impl Pod for __m256d

impl Pod for f32

impl<T> Pod for [T; 3] where
    T: Pod

impl<T> Pod for [T; 0] where
    T: Pod

impl Pod for ()

impl Pod for Option<NonZeroU64>

impl Pod for usize

impl<T> Pod for Option<NonNull<T>> where
    T: 'static, 

impl Pod for Option<NonZeroU8>

impl<T> Pod for [T; 17] where
    T: Pod

impl<T> Pod for [T; 6] where
    T: Pod

impl<T> Pod for [T; 30] where
    T: Pod

impl Pod for Option<NonZeroU16>

impl<T> Pod for [T; 2048] where
    T: Pod

impl Pod for Option<NonZeroI8>

impl Pod for __m128i

impl<T> Pod for [T; 22] where
    T: Pod

impl<T> Pod for PhantomData<T> where
    T: Pod

impl Pod for Option<NonZeroU128>

impl<T> Pod for [T; 12] where
    T: Pod

impl<T> Pod for [T; 11] where
    T: Pod

impl Pod for u32

impl<T> Pod for [T; 1024] where
    T: Pod

impl<T> Pod for [T; 31] where
    T: Pod

impl<T> Pod for [T; 7] where
    T: Pod

impl<T> Pod for [T; 13] where
    T: Pod

impl<T> Pod for [T; 14] where
    T: Pod

impl<T> Pod for [T; 4096] where
    T: Pod

impl Pod for Option<NonZeroI64>

impl Pod for f64

impl Pod for Option<NonZeroIsize>

impl<T> Pod for [T; 128] where
    T: Pod

impl<T> Pod for [T; 8] where
    T: Pod

impl<T> Pod for [T; 15] where
    T: Pod

impl<T> Pod for [T; 26] where
    T: Pod

impl Pod for Option<NonZeroU32>

impl<T> Pod for [T; 10] where
    T: Pod

impl<T> Pod for [T; 2] where
    T: Pod

impl<T> Pod for [T; 32] where
    T: Pod

impl Pod for u64

Loading content...

Implementors

impl<T> Pod for Gray<T> where
    T: Pod
[src]

impl<T> Pod for RGB<T> where
    T: Pod
[src]

impl<T, A> Pod for GrayAlpha<T, A> where
    T: Pod,
    A: Pod
[src]

Loading content...