pub const fn xor(source: &mut [u8], key: &[u8]) {
if !key.is_empty() {
let mut i = 0;
while i < source.len() {
source[i] = source[i] ^ key[i % key.len()].wrapping_add(i as u8);
i += 1;
}
}
}
#[allow(unused)]
#[inline(always)]
pub const fn split_array<const LEN: usize, const LEFT: usize, const RIGHT: usize>(
mut arr: [u8; LEN],
) -> ([u8; LEFT], [u8; RIGHT]) {
const {
if LEN != LEFT + RIGHT {
panic!("LEN must be exactly LEFT + RIGHT")
}
}
let ptr = arr.as_mut_ptr();
let _arr = ::core::mem::ManuallyDrop::new(arr);
let left_ptr = ptr as *mut [u8; LEFT];
let right_ptr = unsafe { ptr.add(LEFT) } as *mut [u8; RIGHT];
unsafe { (left_ptr.read(), right_ptr.read()) }
}