[][src]Trait zerocopy::FromBytes

pub unsafe trait FromBytes { }

Types for which any byte pattern is valid.

WARNING: Do not implement this trait yourself! Instead, use #[derive(FromBytes)].

FromBytes types can safely be deserialized from an untrusted sequence of bytes because any byte sequence corresponds to a valid instance of the type.

Safety

If T: FromBytes, then unsafe code may assume that it is sound to treat any initialized sequence of bytes of length size_of::<T>() as a T. If a type is marked as FromBytes which violates this contract, it may cause undefined behavior.

If a type has the following properties, then it is safe to implement FromBytes for that type:

  • If the type is a struct:
    • It must have a defined representation (repr(C), repr(transparent), or repr(packed))
    • All of its fields must implement FromBytes
  • If the type is an enum:
    • It must be a C-like enum (meaning that all variants have no fields)
    • It must have a defined representation (reprs C, u8, u16, u32, u64, usize, i8, i16, i32, i64, or isize).
    • The maximum number of discriminants must be used (so that every possible bit pattern is a valid one). Be very careful when using the C, usize, or isize representations, as their size is platform-dependent.

Implementations on Foreign Types

impl<T> FromBytes for PhantomData<T>[src]

Loading content...

Implementors

impl FromBytes for ()[src]

impl FromBytes for i8[src]

impl FromBytes for i16[src]

impl FromBytes for i32[src]

impl FromBytes for i64[src]

impl FromBytes for i128[src]

impl FromBytes for isize[src]

impl FromBytes for u8[src]

impl FromBytes for u16[src]

impl FromBytes for u32[src]

impl FromBytes for u64[src]

impl FromBytes for u128[src]

impl FromBytes for usize[src]

impl<T: FromBytes> FromBytes for [T; 0][src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T: FromBytes> FromBytes for [T][src]

Loading content...