#![allow(clippy::arithmetic_side_effects)]
#![allow(clippy::transmute_ptr_to_ptr)]
use core::slice;
pub(crate) const fn as_chunks<T, const N: usize>(slice: &[T]) -> (&[[T; N]], &[T]) {
const {
assert!(N != 0, "chunk size must be non-zero");
}
let len_rounded_down = slice.len() / N * N;
let (multiple_of_n, remainder) = unsafe { slice.split_at_unchecked(len_rounded_down) };
let array_slice = unsafe { as_chunks_unchecked(multiple_of_n) };
(array_slice, remainder)
}
const unsafe fn as_chunks_unchecked<T, const N: usize>(slice: &[T]) -> &[[T; N]] {
let new_len = slice.len() / N;
unsafe { slice::from_raw_parts(slice.as_ptr().cast(), new_len) }
}