[][src]Trait safe_transmute::pod::PodTransmutable

pub unsafe trait PodTransmutable: Copy { }

Type that can be non-unsafely transmuted into

A type T implementing this trait means that any arbitrary slice of bytes of length size_of::<T>() can be safely interpreted as a value of that type in all circumstances. In most cases this is a POD class or a trivially copyable class.

This serves as a marker trait for all functions in this module.

Warning: if you transmute into a floating-point type you will have a chance to create a signaling NaN, which, while not illegal, can be unwieldy. Check out util::designalise_f{32,64}() for a remedy.

Nota bene: bool is not PodTransmutable because they're restricted to being 0 or 1, which means that an additional value check is required.

Safety

It is only safe to implement PodTransmutable for a type T if it is safe for a slice of any arbitrary data &[u8] of length sizeof<T>() to be transmute()d to a unit-length &[T], without any other conversion operation being required.

Consult the Transmutes section of the Nomicon for more details.

Implementations on Foreign Types

impl PodTransmutable for u8[src]

impl PodTransmutable for i8[src]

impl PodTransmutable for u16[src]

impl PodTransmutable for i16[src]

impl PodTransmutable for u32[src]

impl PodTransmutable for i32[src]

impl PodTransmutable for u64[src]

impl PodTransmutable for i64[src]

impl PodTransmutable for usize[src]

impl PodTransmutable for isize[src]

impl PodTransmutable for f32[src]

impl PodTransmutable for f64[src]

impl<T: PodTransmutable> PodTransmutable for [T; 1][src]

impl<T: PodTransmutable> PodTransmutable for [T; 2][src]

impl<T: PodTransmutable> PodTransmutable for [T; 3][src]

impl<T: PodTransmutable> PodTransmutable for [T; 4][src]

impl<T: PodTransmutable> PodTransmutable for [T; 5][src]

impl<T: PodTransmutable> PodTransmutable for [T; 6][src]

impl<T: PodTransmutable> PodTransmutable for [T; 7][src]

impl<T: PodTransmutable> PodTransmutable for [T; 8][src]

impl<T: PodTransmutable> PodTransmutable for [T; 9][src]

impl<T: PodTransmutable> PodTransmutable for [T; 10][src]

impl<T: PodTransmutable> PodTransmutable for [T; 11][src]

impl<T: PodTransmutable> PodTransmutable for [T; 12][src]

impl<T: PodTransmutable> PodTransmutable for [T; 13][src]

impl<T: PodTransmutable> PodTransmutable for [T; 14][src]

impl<T: PodTransmutable> PodTransmutable for [T; 15][src]

impl<T: PodTransmutable> PodTransmutable for [T; 16][src]

impl<T: PodTransmutable> PodTransmutable for [T; 17][src]

impl<T: PodTransmutable> PodTransmutable for [T; 18][src]

impl<T: PodTransmutable> PodTransmutable for [T; 19][src]

impl<T: PodTransmutable> PodTransmutable for [T; 20][src]

impl<T: PodTransmutable> PodTransmutable for [T; 21][src]

impl<T: PodTransmutable> PodTransmutable for [T; 22][src]

impl<T: PodTransmutable> PodTransmutable for [T; 23][src]

impl<T: PodTransmutable> PodTransmutable for [T; 24][src]

impl<T: PodTransmutable> PodTransmutable for [T; 25][src]

impl<T: PodTransmutable> PodTransmutable for [T; 26][src]

impl<T: PodTransmutable> PodTransmutable for [T; 27][src]

impl<T: PodTransmutable> PodTransmutable for [T; 28][src]

impl<T: PodTransmutable> PodTransmutable for [T; 29][src]

impl<T: PodTransmutable> PodTransmutable for [T; 30][src]

impl<T: PodTransmutable> PodTransmutable for [T; 31][src]

impl<T: PodTransmutable> PodTransmutable for [T; 32][src]

Loading content...

Implementors

Loading content...