Trait FromBytes

Source
pub trait FromBytes<'a> {
    // Required method
    fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self;
}
Expand description

A type that can be reconstituted from byte slices with lifetime 'a.

Implementors of this trait almost certainly reference the lifetime 'a themselves, unless they actively deserialize the bytes (vs sit on the slices, as if zero-copy).

Required Methods§

Source

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Reconstructs self from a sequence of correctly aligned and sized bytes slices.

The implementation is expected to consume the right number of items from the iterator, which may go on to be used by other implementations of FromBytes.

The implementation should aim for only doing trivial work, as it backs calls like borrow for serialized containers.

Implementations should almost always be marked as #[inline(always)] to ensure that they are inlined. A single non-inlined function on a tree of from_bytes calls can cause the performance to drop significantly.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a> FromBytes<'a> for &'a [f32]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [f64]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [i8]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [i16]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [i32]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [i64]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [u8]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [u16]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [u32]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [u64]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<i8>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<i16>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<i32>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<i64>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<u8>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<u16>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<u32>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a> FromBytes<'a> for &'a [Wrapping<u64>]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>> FromBytes<'a> for (A,)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>> FromBytes<'a> for (A, B)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>> FromBytes<'a> for (A, B, C)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>> FromBytes<'a> for (A, B, C, D)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>, F: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E, F)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>, F: FromBytes<'a>, G: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E, F, G)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>, F: FromBytes<'a>, G: FromBytes<'a>, H: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E, F, G, H)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>, F: FromBytes<'a>, G: FromBytes<'a>, H: FromBytes<'a>, I: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E, F, G, H, I)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, A: FromBytes<'a>, B: FromBytes<'a>, C: FromBytes<'a>, D: FromBytes<'a>, E: FromBytes<'a>, F: FromBytes<'a>, G: FromBytes<'a>, H: FromBytes<'a>, I: FromBytes<'a>, J: FromBytes<'a>> FromBytes<'a> for (A, B, C, D, E, F, G, H, I, J)

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[f32; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[f64; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[i8; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[i16; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[i32; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[i64; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[u8; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[u16; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[u32; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[u64; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<i8>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<i16>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<i32>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<i64>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<u8>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<u16>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<u32>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Source§

impl<'a, const N: usize> FromBytes<'a> for &'a [[Wrapping<u64>; N]]

Source§

fn from_bytes(bytes: &mut impl Iterator<Item = &'a [u8]>) -> Self

Implementors§

Source§

impl<'a> FromBytes<'a> for Empties<&'a u64>

Source§

impl<'a, BC: FromBytes<'a>> FromBytes<'a> for Strides<BC, &'a u64>

Source§

impl<'a, BC: FromBytes<'a>, VC: FromBytes<'a>> FromBytes<'a> for Strings<BC, VC>

Source§

impl<'a, CC: FromBytes<'a>, VC: FromBytes<'a>> FromBytes<'a> for RankSelect<CC, VC, &'a u64>

Source§

impl<'a, CV: FromBytes<'a>> FromBytes<'a> for Chars<CV>

Source§

impl<'a, CV: FromBytes<'a>> FromBytes<'a> for I128s<CV>

Source§

impl<'a, CV: FromBytes<'a>> FromBytes<'a> for Isizes<CV>

Source§

impl<'a, CV: FromBytes<'a>> FromBytes<'a> for U128s<CV>

Source§

impl<'a, CV: FromBytes<'a>> FromBytes<'a> for Usizes<CV>

Source§

impl<'a, SC: FromBytes<'a>, NC: FromBytes<'a>> FromBytes<'a> for Durations<SC, NC>

Source§

impl<'a, SC: FromBytes<'a>, TC: FromBytes<'a>, CC: FromBytes<'a>, VC: FromBytes<'a>> FromBytes<'a> for Results<SC, TC, CC, VC, &'a u64>

Source§

impl<'a, TC: FromBytes<'a>, BC: FromBytes<'a>> FromBytes<'a> for Vecs<TC, BC>

Source§

impl<'a, TC: FromBytes<'a>, CC: FromBytes<'a>, VC: FromBytes<'a>> FromBytes<'a> for Options<TC, CC, VC, &'a u64>

Source§

impl<'a, VC: FromBytes<'a>> FromBytes<'a> for Bools<VC, &'a u64>

Source§

impl<'a, const K: u64> FromBytes<'a> for Fixeds<K, &'a u64>