bit-buf 0.1.2

I needed this.
Documentation
use crate::{BitBuf, Storage};

impl<S: Storage> BitBuf<S> {
  /// Read a BE-bit-order [`u8`] from `byte_offset` without performing any bound checks
  ///
  /// # Safety
  ///
  /// * This is UB if [`byte_offset >= self.bytes().len()`][Self::bytes]
  ///
  /// # Panics
  ///
  /// * Panics in debug mode if [`byte_offset >= self.bytes().len()`][Self::bytes]
  #[inline(always)]
  #[must_use]
  pub unsafe fn read_u8_be_aligned_full_at_unchecked(&self, byte_offset: usize) -> u8 {
    let bytes = self.bytes();

    debug_assert!(
      byte_offset < bytes.len(),
      "BitBuf::read_u8_be_aligned_full_at_unchecked: index out of bounds! len is {}, offset is {}",
      bytes.len(),
      byte_offset,
    );

    unsafe { *bytes.get_unchecked(byte_offset) }
  }

  /// Read the next BE-bit-order [`u8`] without performing any bound checks, advancing the internal cursor
  ///
  /// # Safety
  ///
  /// * The internal cursor must be byte-aligned ([`self.is_aligned()`][Self::is_aligned])
  /// * This is UB if the internal cursor points past the end of storage (<code>[self.byte_pos()][Self::byte_pos] >= [self.bytes().len()][Self::bytes]</code>)
  ///
  /// # Panics
  ///
  /// * Panics in debug mode if the internal cursor is not byte-aligned ([`!self.is_aligned()`][Self::is_aligned])
  /// * Panics in debug mode if the internal cursor points past the end of storage (<code>[self.byte_pos()][Self::byte_pos] >= [self.bytes().len()][Self::bytes]</code>)
  #[inline(always)]
  #[must_use]
  pub unsafe fn read_u8_be_aligned_full_unchecked(&mut self) -> u8 {
    debug_assert!(
      self.is_aligned(),
      "BitBuf::read_u8_be_aligned_full_unchecked called at unaligned bit position: {}",
      self.pos(),
    );

    let b = unsafe { self.read_u8_be_aligned_full_at_unchecked(self.byte_pos()) };
    self.advance_bytes(1);
    b
  }
}