decancer 2.0.1

A tiny package that removes common unicode confusables/homoglyphs from strings.
Documentation
pub(crate) const CODEPOINT_MASK: u32 = 0x000f_ffff;

pub(crate) const fn read_u32_le(ptr: *const u8) -> u32 {
  unsafe { u32::from_le_bytes([*ptr, *ptr.offset(1), *ptr.offset(2), *ptr.offset(3)]) }
}

pub(crate) const fn read_u16_le(ptr: *const u8) -> u16 {
  unsafe { u16::from_le_bytes([*ptr, *ptr.offset(1)]) }
}

cfg_if::cfg_if! {
  if #[cfg(feature = "std")] {
    use core::ops::{Index, IndexMut, Range};

    #[inline(always)]
    pub(crate) fn sliced<T: Index<Range<usize>> + ?Sized>(
      slicable: &T,
      range: Range<usize>,
    ) -> &<T as Index<Range<usize>>>::Output {
      slicable.index(range)
    }

    #[inline(always)]
    pub(crate) fn sliced_mut<T: IndexMut<Range<usize>> + ?Sized>(
      slicable: &mut T,
      range: Range<usize>,
    ) -> &mut <T as Index<Range<usize>>>::Output {
      slicable.index_mut(range)
    }
  }
}