Trait deku::DekuRead

source ·
pub trait DekuRead<'a, Ctx = ()> {
    // Required method
    fn read(
        input: &'a BitSlice<u8, Msb0>,
        ctx: Ctx
    ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>
       where Self: Sized;
}
Expand description

“Reader” trait: read bits and construct type

Required Methods§

source

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read bits and construct type

  • input - Input as bits
  • ctx - A context required by context-sensitive reading. A unit type () means no context needed.

Returns the remaining bits after parsing in addition to Self.

Implementations on Foreign Types§

source§

impl DekuRead<'_, ()> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, K: DekuRead<'a, Ctx> + Eq + Hash, V: DekuRead<'a, Ctx>, S: BuildHasher + Default, Ctx: Copy, Predicate: FnMut(&(K, V)) -> bool> DekuRead<'a, (Limit<(K, V), Predicate>, Ctx)> for HashMap<K, V, S>

source§

fn read( input: &'a BitSlice<u8, Msb0>, (limit, inner_ctx): (Limit<(K, V), Predicate>, Ctx) ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read K, Vs until the given limit

  • limit - the limiting factor on the amount of K, Vs to read
  • inner_ctx - The context required by K, V. It will be passed to every K, Vs when constructing.
Examples
let input: Vec<u8> = vec![100, 1, 2, 3, 4];
let (rest, map) = HashMap::<u8, u32>::read(input.view_bits(), (1.into(), Endian::Little)).unwrap();
assert!(rest.is_empty());
let mut expected = HashMap::<u8, u32>::default();
expected.insert(100, 0x04030201);
assert_eq!(expected, map)
source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroI8

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroU8

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroU8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroI64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroU128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroI64

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroU8

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, Ctx: Copy, Predicate: FnMut(&u8) -> bool> DekuRead<'a, (Limit<u8, Predicate>, Ctx)> for &'a [u8]where u8: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, (limit, inner_ctx): (Limit<u8, Predicate>, Ctx) ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>

Read u8s until the given limit

  • limit - the limiting factor on the amount of u8s to read
  • inner_ctx - The context required by u8. It will be passed to every u8s when constructing.
Examples
let input = vec![1u8, 2, 3, 4];
let (rest, v) = <&[u8]>::read(input.view_bits(), (4.into(), Endian::Little)).unwrap();
assert!(rest.is_empty());
assert_eq!(&[1u8, 2, 3, 4], v)
source§

impl DekuRead<'_, ()> for NonZeroI128

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized, G: DekuRead<'a, Ctx> + Sized, H: DekuRead<'a, Ctx> + Sized, I: DekuRead<'a, Ctx> + Sized, J: DekuRead<'a, Ctx> + Sized, K: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F, G, H, I, J, K)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, T: DekuRead<'a, Ctx>, Ctx: Copy, Predicate: FnMut(&T) -> bool> DekuRead<'a, (Limit<T, Predicate>, Ctx)> for Vec<T>

source§

fn read( input: &'a BitSlice<u8, Msb0>, (limit, inner_ctx): (Limit<T, Predicate>, Ctx) ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read Ts until the given limit

  • limit - the limiting factor on the amount of Ts to read
  • inner_ctx - The context required by T. It will be passed to every Ts when constructing.
Examples
let input = vec![1u8, 2, 3, 4];
let (rest, v) = Vec::<u32>::read(input.view_bits(), (1.into(), Endian::Little)).unwrap();
assert!(rest.is_empty());
assert_eq!(vec![0x04030201], v)
source§

impl DekuRead<'_, ByteSize> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, (_, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for NonZeroUsize

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, T, Ctx, Predicate> DekuRead<'a, (Limit<T, Predicate>, Ctx)> for Box<[T]>where T: DekuRead<'a, Ctx>, Ctx: Copy, Predicate: FnMut(&T) -> bool,

source§

fn read( input: &'a BitSlice<u8, Msb0>, (limit, inner_ctx): (Limit<T, Predicate>, Ctx) ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read Ts until the given limit

source§

impl<'a, Ctx> DekuRead<'a, Ctx> for Ipv6Addrwhere u128: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroUsize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroI64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroUsize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroU128

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for NonZeroU128

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized, G: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F, G)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroU64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroIsize

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for NonZeroU64

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroU64

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroI128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A,)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized, G: DekuRead<'a, Ctx> + Sized, H: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F, G, H)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroU16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroU32

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, T: DekuRead<'a> + Eq + Hash, S: BuildHasher + Default, Predicate: FnMut(&T) -> bool> DekuRead<'a, Limit<T, Predicate>> for HashSet<T, S>

source§

fn read( input: &'a BitSlice<u8, Msb0>, limit: Limit<T, Predicate> ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read Ts until the given limit from input for types which don’t require context.

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroI128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<Ctx: Copy> DekuRead<'_, Ctx> for ()

source§

fn read( input: &BitSlice<u8, Msb0>, _inner_ctx: Ctx ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

NOP on read

source§

impl DekuRead<'_, Endian> for NonZeroUsize

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for NonZeroIsize

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for NonZeroU16

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, T: DekuRead<'a, Ctx> + Eq + Hash, S: BuildHasher + Default, Ctx: Copy, Predicate: FnMut(&T) -> bool> DekuRead<'a, (Limit<T, Predicate>, Ctx)> for HashSet<T, S>

source§

fn read( input: &'a BitSlice<u8, Msb0>, (limit, inner_ctx): (Limit<T, Predicate>, Ctx) ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read Ts until the given limit

  • limit - the limiting factor on the amount of Ts to read
  • inner_ctx - The context required by T. It will be passed to every Ts when constructing.
Examples
let input = vec![1u8, 2, 3, 4];
let expected: HashSet<u32> = vec![0x04030201].into_iter().collect();
let (rest, set) = HashSet::<u32>::read(input.view_bits(), (1.into(), Endian::Little)).unwrap();
assert!(rest.is_empty());
assert_eq!(expected, set)
source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroU16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroU8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for NonZeroI32

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, T, const N: usize> DekuRead<'a, Ctx> for [T; N]where T: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized, G: DekuRead<'a, Ctx> + Sized, H: DekuRead<'a, Ctx> + Sized, I: DekuRead<'a, Ctx> + Sized, J: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F, G, H, I, J)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroU64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for NonZeroU16

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for i32

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx> DekuRead<'a, Ctx> for boolwhere Ctx: Copy, u8: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, inner_ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>

wrapper around u8::read with consideration to context, such as bit size true if the result of the read is 1, false if 0 and error otherwise

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroIsize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, BitSize> for u32

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, T, Ctx> DekuRead<'a, Ctx> for Cow<'a, T>where T: DekuRead<'a, Ctx> + Clone, Ctx: Copy,

source§

fn read( input: &'a BitSlice<u8, Msb0>, inner_ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read a T from input and store as Cow

source§

impl<'a, K: DekuRead<'a> + Eq + Hash, V: DekuRead<'a>, S: BuildHasher + Default, Predicate: FnMut(&(K, V)) -> bool> DekuRead<'a, Limit<(K, V), Predicate>> for HashMap<K, V, S>

source§

fn read( input: &'a BitSlice<u8, Msb0>, limit: Limit<(K, V), Predicate> ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read K, Vs until the given limit from input for types which don’t require context.

source§

impl DekuRead<'_, Endian> for usize

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for NonZeroU32

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for NonZeroI16

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroI8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroI64

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroU32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroI16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized, C: DekuRead<'a, Ctx> + Sized, D: DekuRead<'a, Ctx> + Sized, E: DekuRead<'a, Ctx> + Sized, F: DekuRead<'a, Ctx> + Sized, G: DekuRead<'a, Ctx> + Sized, H: DekuRead<'a, Ctx> + Sized, I: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B, C, D, E, F, G, H, I)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, Ctx: Copy, A: DekuRead<'a, Ctx> + Sized, B: DekuRead<'a, Ctx> + Sized> DekuRead<'a, Ctx> for (A, B)

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx: Copy> DekuRead<'a, Ctx> for CStringwhere u8: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for u64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, Endian> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroU128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroU32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, T, Ctx> DekuRead<'a, Ctx> for Box<T>where T: DekuRead<'a, Ctx>, Ctx: Copy,

source§

fn read( input: &'a BitSlice<u8, Msb0>, inner_ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read a T from input and store as Box

source§

impl DekuRead<'_, Endian> for NonZeroI8

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ()> for i16

source§

fn read( input: &BitSlice<u8, Msb0>, _: () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, BitSize> for i128

source§

fn read( input: &BitSlice<u8, Msb0>, bit_size: BitSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroI32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl<'a, T: DekuRead<'a, Ctx>, Ctx: Copy> DekuRead<'a, Ctx> for Option<T>

source§

fn read( input: &'a BitSlice<u8, Msb0>, inner_ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read a T from input and store as Some(T)

  • inner_ctx - The context required by T. It will be passed to every Ts when constructing.
Examples
let input = vec![1u8, 2, 3, 4];
let (rest, v) = Option::<u32>::read(input.view_bits(), Endian::Little).unwrap();
assert!(rest.is_empty());
assert_eq!(v, Some(0x04030201))
source§

impl DekuRead<'_, (Endian, BitSize)> for isize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, ByteSize> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroI16

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for i8

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for i64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroI8

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ()> for NonZeroI32

source§

fn read( input: &BitSlice<u8, Msb0>, (): () ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, BitSize)> for u128

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for f64

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl DekuRead<'_, (Endian, BitSize)> for NonZeroI32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bitsize): (Endian, BitSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, (Endian, ByteSize)> for NonZeroIsize

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, bytesize): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroI128

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for NonZeroI16

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, Endian> for u8

source§

fn read( input: &BitSlice<u8, Msb0>, endian: Endian ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, Ctx> DekuRead<'a, Ctx> for Ipv4Addrwhere u32: DekuRead<'a, Ctx>,

source§

fn read( input: &'a BitSlice<u8, Msb0>, ctx: Ctx ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

source§

impl DekuRead<'_, ByteSize> for u16

source§

fn read( input: &BitSlice<u8, Msb0>, byte_size: ByteSize ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

source§

impl<'a, T: DekuRead<'a>, Predicate: FnMut(&T) -> bool> DekuRead<'a, Limit<T, Predicate>> for Vec<T>

source§

fn read( input: &'a BitSlice<u8, Msb0>, limit: Limit<T, Predicate> ) -> Result<(&'a BitSlice<u8, Msb0>, Self), DekuError>where Self: Sized,

Read Ts until the given limit from input for types which don’t require context.

source§

impl DekuRead<'_, (Endian, ByteSize)> for f32

source§

fn read( input: &BitSlice<u8, Msb0>, (endian, size): (Endian, ByteSize) ) -> Result<(&BitSlice<u8, Msb0>, Self), DekuError>

Implementors§