Struct BitsArray

Source
pub struct BitsArray<'a, const N: usize> { /* private fields */ }
Expand description

This struct wraps a provided borrowed static array in a MutBits impl. Operates like a slice, walking through the array filling it up.

Implementations§

Source§

impl<'a, const N: usize> BitsArray<'a, N>

Source

pub fn new(arr: &'a [u8; N]) -> Self

A new view into the backed array, limited only by the length of the backed array

Source

pub fn new_limited(arr: &'a [u8; N], max_len: usize) -> Self

A new view into the backed array, limited by the provided maximum length.

Source

pub fn reset(&mut self)

Resets the reading position back to the start of the array.

Trait Implementations§

Source§

impl<const N: usize> Bits for BitsArray<'_, N>

Source§

fn next_u8(&mut self) -> Result<Option<u8>, Error>

Optionally returns a single u8
Source§

fn read_u8(&mut self) -> Result<u8, Error>

Reads a single u8
Source§

fn read_i8(&mut self) -> Result<i8, Error>

Reads a single i8
Source§

fn next_i8(&mut self) -> Result<Option<i8>, Error>

Optionally returns a single i8
Source§

fn read_bool(&mut self) -> Result<bool, Error>

Reads a single bool (u8), returning true if 1, false if 0, or InvalidInput if anything else.
Source§

fn next_bool(&mut self) -> Result<Option<bool>, Error>

Reads a single bool (u8), returning true if 1, false if 0, or InvalidInput if anything else.
Source§

fn read_be_utf8_char(&mut self) -> Result<char, Error>

Reads 1, 2, 3, or 4 bytes to construct a UTF-8 charpoint.
Source§

fn read_be_u16(&mut self) -> Result<u16, Error>

Reads a single u16 in big-endian order, 2 bytes, MSB first.
Source§

fn read_le_u16(&mut self) -> Result<u16, Error>

Reads a single u16 in little-endian order, 2 bytes, LSB first.
Source§

fn next_be_u16(&mut self) -> Result<Option<u16>, Error>

Optionally reads a single u16 in big-endian order, 2 bytes, MSB first.
Source§

fn next_le_u16(&mut self) -> Result<Option<u16>, Error>

Optionally reads a single u16 in little-endian order, 2 bytes, LSB first.
Source§

fn read_be_u32(&mut self) -> Result<u32, Error>

Reads a single u32 in big-endian order, 4 bytes, MSB first.
Source§

fn read_le_u32(&mut self) -> Result<u32, Error>

Reads a single u32 in little-endian order, 4 bytes, LSB first.
Source§

fn next_be_u32(&mut self) -> Result<Option<u32>, Error>

Optionally reads a single u32 in big-endian order, 4 bytes, MSB first.
Source§

fn next_le_u32(&mut self) -> Result<Option<u32>, Error>

Optionally reads a single u32 in little-endian order, 4 bytes, LSB first.
Source§

fn read_be_u64(&mut self) -> Result<u64, Error>

Reads a single u64 in big-endian order, 8 bytes, MSB first.
Source§

fn read_le_u64(&mut self) -> Result<u64, Error>

Reads a single u64 in big-endian order, 8 bytes, MSB first.
Source§

fn next_be_u64(&mut self) -> Result<Option<u64>, Error>

Optionally reads a single u64 in big-endian order, 8 bytes, MSB first.
Source§

fn next_le_u64(&mut self) -> Result<Option<u64>, Error>

Optionally reads a single u64 in little-endian order, 4 bytes, LSB first.
Source§

fn read_be_u128(&mut self) -> Result<u128, Error>

Reads a single u128 in big-endian order, 16 bytes, MSB first.
Source§

fn next_be_u128(&mut self) -> Result<Option<u128>, Error>

Optionally reads a single u128 in big-endian order, 16 bytes, MSB first.
Source§

fn read_be_i128(&mut self) -> Result<i128, Error>

Reads a single i128 in big-endian order, 16 bytes, MSB first.
Source§

fn next_be_i128(&mut self) -> Result<Option<i128>, Error>

Optionally reads a single i128 in big-endian order, 16 bytes, MSB first.
Source§

fn read_be_f32(&mut self) -> Result<f32, Error>

Reads a single f32, 4 bytes. Standard IEEE754 encoding
Source§

fn read_le_f32(&mut self) -> Result<f32, Error>

Reads a single f32, 4 bytes. Reversed IEEE754 encoding
Source§

fn read_f32(&mut self, order: ByteOrder) -> Result<f32, Error>

Reads a single f32, 4 bytes. Specified byte ordering.
Source§

fn next_be_f32(&mut self) -> Result<Option<f32>, Error>

Optionally reads a single f32, 4 bytes. Standard IEEE754 encoding
Source§

fn next_le_f32(&mut self) -> Result<Option<f32>, Error>

Optionally reads a single f32, 4 bytes. Reversed IEEE754 encoding
Source§

fn read_be_f64(&mut self) -> Result<f64, Error>

Reads a single f64, 8 bytes. Standard IEEE754 encoding
Source§

fn read_le_f64(&mut self) -> Result<f64, Error>

Reads a single f64, 8 bytes. Reversed IEEE754 encoding
Source§

fn next_be_f64(&mut self) -> Result<Option<f64>, Error>

Optionally reads a single f64, 8 bytes. Standard IEEE754 encoding
Source§

fn next_le_f64(&mut self) -> Result<Option<f64>, Error>

Optionally reads a single f64, 8 bytes. Reversed IEEE754 encoding
Source§

fn read_f64(&mut self, order: ByteOrder) -> Result<f64, Error>

Reads a single f64, 8 bytes. Specified byte ordering.
Source§

fn read_be_i16(&mut self) -> Result<i16, Error>

Reads a single i16 in big-endian order, 2 bytes, MSB first.
Source§

fn read_le_i16(&mut self) -> Result<i16, Error>

Reads a single i16 in little-endian order, 2 bytes, LSB first.
Source§

fn next_be_i16(&mut self) -> Result<Option<i16>, Error>

Optionally reads a single i16 in big-endian order, 2 bytes, MSB first.
Source§

fn next_le_i16(&mut self) -> Result<Option<i16>, Error>

Optionally reads a single i16 in little-endian order, 2 bytes, LSB first.
Source§

fn read_be_i32(&mut self) -> Result<i32, Error>

Reads a single i32 in big-endian order, 4 bytes, MSB first.
Source§

fn read_le_i32(&mut self) -> Result<i32, Error>

Reads a single i32 in little-endian order, 4 bytes, LSB first.
Source§

fn next_be_i32(&mut self) -> Result<Option<i32>, Error>

Optionally reads a single i32 in big-endian order, 4 bytes, MSB first.
Source§

fn next_le_i32(&mut self) -> Result<Option<i32>, Error>

Optionally reads a single i32 in little-endian order, 4 bytes,LSB first.
Source§

fn read_be_i64(&mut self) -> Result<i64, Error>

Reads a single i64 in big-endian order, 8 bytes, MSB first.
Source§

fn read_le_i64(&mut self) -> Result<i64, Error>

Reads a single i64 in little-endian order, 8 bytes, LSB first.
Source§

fn next_be_i64(&mut self) -> Result<Option<i64>, Error>

Optionally reads a single i64 in big-endian order, 8 bytes, MSB first.
Source§

fn next_le_i64(&mut self) -> Result<Option<i64>, Error>

Optionally reads a single i64 in little-endian order, 8 bytes, LSB first.
Source§

fn read_le_i128(&mut self) -> Result<i128, Error>

Reads a single i128 in little-endian order, 8 bytes, LSB first.
Source§

fn next_le_i128(&mut self) -> Result<Option<i128>, Error>

Optionally reads a single i64 in little-endian order, 8 bytes, LSB first.
Source§

fn read_le_u128(&mut self) -> Result<u128, Error>

Reads a single u128 in little-endian order, 8 bytes, LSB first.
Source§

fn next_le_u128(&mut self) -> Result<Option<u128>, Error>

Optionally reads a single i64 in little-endian order, 8 bytes, LSB first.
Source§

fn advance(&mut self, len: usize) -> Result<usize, Error>

Advances the stream by at most ‘len’ bytes. The actual amount of bytes advanced may be less, and is returned in [Ok(usize)]
Source§

fn read_u8_blob_into<T: MutBits>(&mut self, into: &mut T) -> Result<(), Error>

Source§

fn read_u16_blob_into<T: MutBits>(&mut self, into: &mut T) -> Result<(), Error>

Source§

fn read_u32_blob_into<T: MutBits>(&mut self, into: &mut T) -> Result<(), Error>

Source§

fn read_u64_blob_into<T: MutBits>(&mut self, into: &mut T) -> Result<(), Error>

Source§

fn read_u8_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u8 declaring the size.
Source§

fn read_be_u16_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u16 declaring the size.
Source§

fn read_le_u16_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u16 declaring the size.
Source§

fn read_be_u32_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u32 declaring the size.
Source§

fn read_le_u32_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u32 declaring the size.
Source§

fn read_be_u64_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u64 declaring the size.
Source§

fn read_le_u64_blob(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads a sized blob, a series of bytes preceded by a u64 declaring the size.
Source§

fn read_exact_vec(&mut self, size: usize) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads the specified amount of bytes into a Vec<u8> and returns it
Source§

fn read_all_str_lossy(&mut self) -> Result<String, Error>

Available on crate feature alloc only.
Reads the entire stream into a UTF-8 String, dropping all other bytes.
Source§

fn read_str_sized_lossy(&mut self, len: usize) -> Result<String, Error>

Available on crate feature alloc only.
Reads the specified amount of bytes into a UTF-8 String, dropping all other bytes.
Source§

fn read_all_vec(&mut self) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads to the end of the stream and returns the data as a Vec<u8>
Source§

fn read_until(&mut self, search: &[u8]) -> Result<Vec<u8>, Error>

Available on crate feature alloc only.
Reads from the input stream until: Read more
Source§

fn read_line_vec(&mut self) -> Result<Option<Vec<u8>>, Error>

Available on crate feature alloc only.
Reads until the next \n character, ignoring any \r characters along the way.
Source§

fn read_line_str_lossy(&mut self) -> Result<Option<String>, Error>

Available on crate feature alloc only.
Reads until the next \n character, then calls String::from_utf8_lossy.
Source§

fn read_line_str(&mut self) -> Result<Option<String>, Error>

Available on crate feature alloc only.
Reads until the next \n character, then calls String::from_utf8
Source§

fn consume_until(&mut self, search: &[u8]) -> Result<(), Error>

Available on crate feature alloc only.
Consumes data from the input stream until: Read more
Source§

fn read_str_u32_blob(&mut self) -> Result<String, Error>

Available on crate feature alloc only.
Reads a specific sized string from the stream, a string prefixed by a 4-byte big-endian length.
Source§

fn read_exact<const N: usize>(&mut self) -> Result<[u8; N], Error>

Reads the specified amount of bytes into a stack-allocated array.
Source§

fn read_exact_into<T: MutBits>( &mut self, size: usize, into: &mut T, ) -> Result<(), Error>

Reads the specified amount of bytes into the specified target.
Source§

fn read_all_into<T: MutBits>(&mut self, into: &mut T) -> Result<(), Error>

Reads to the end of the stream, and writes it into the specified target.
Source§

fn read_some_into<T: MutBits>(&mut self, buf: &mut T) -> Result<usize, Error>

Reads some subset of the data into the specified target.
Source§

fn read_u16(&mut self, order: ByteOrder) -> Result<u16, Error>

Reads a single u16 in the specified order order, 2 bytes.
Source§

fn read_u32(&mut self, order: ByteOrder) -> Result<u32, Error>

Reads a single u32 in the specified order order, 4 bytes.
Source§

fn read_u64(&mut self, order: ByteOrder) -> Result<u64, Error>

Reads a single u64 in the specified order order, 8 bytes.
Source§

fn read_u128(&mut self, order: ByteOrder) -> Result<u128, Error>

Reads a single u128 in the specified order order, 16 bytes.
Source§

fn read_i16(&mut self, order: ByteOrder) -> Result<i16, Error>

Reads a single i16 in the specified order order, 2 bytes.
Source§

fn read_i32(&mut self, order: ByteOrder) -> Result<i32, Error>

Reads a single i32 in the specified order order, 4 bytes.
Source§

fn read_i64(&mut self, order: ByteOrder) -> Result<i64, Error>

Reads a single i64 in the specified order order, 4 bytes.
Source§

fn read_i128(&mut self, order: ByteOrder) -> Result<i128, Error>

Reads a single i128 in the specified order order, 16 bytes.
Source§

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

Source§

fn from(value: &'a [u8; N]) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a, const N: usize> Freeze for BitsArray<'a, N>

§

impl<'a, const N: usize> RefUnwindSafe for BitsArray<'a, N>

§

impl<'a, const N: usize> Send for BitsArray<'a, N>

§

impl<'a, const N: usize> Sync for BitsArray<'a, N>

§

impl<'a, const N: usize> Unpin for BitsArray<'a, N>

§

impl<'a, const N: usize> UnwindSafe for BitsArray<'a, N>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.