#[inline(always)]
pub(crate) unsafe fn copy16(src: *const u8, dst: *mut u8) {
unsafe {
dst.cast::<[u8; 16]>()
.write_unaligned(src.cast::<[u8; 16]>().read_unaligned());
}
}
#[inline(always)]
pub(crate) unsafe fn copy_token_bytes(src: *const u8, dst: *mut u8, len: usize) {
unsafe {
match len {
0 => {}
1 => dst.write(src.read()),
2 | 3 => {
dst.cast::<u16>()
.write_unaligned(src.cast::<u16>().read_unaligned());
dst.add(len - 2)
.cast::<u16>()
.write_unaligned(src.add(len - 2).cast::<u16>().read_unaligned());
}
4..=7 => {
dst.cast::<u32>()
.write_unaligned(src.cast::<u32>().read_unaligned());
dst.add(len - 4)
.cast::<u32>()
.write_unaligned(src.add(len - 4).cast::<u32>().read_unaligned());
}
8..=15 => {
dst.cast::<u64>()
.write_unaligned(src.cast::<u64>().read_unaligned());
dst.add(len - 8)
.cast::<u64>()
.write_unaligned(src.add(len - 8).cast::<u64>().read_unaligned());
}
16 => copy16(src, dst),
_ => std::ptr::copy_nonoverlapping(src, dst, len),
}
}
}