//! Utilities to help with buffering.

#![allow(unsafe_code)]

use core::mem::MaybeUninit;
use core::slice;

/// Split an uninitialized byte slice into initialized and uninitialized parts.
///
/// # Safety
///
/// At least `init` bytes must be initialized.
#[inline]
pub(super) unsafe fn split_init(
    buf: &mut [MaybeUninit<u8>],
    init: usize,
) -> (&mut [u8], &mut [MaybeUninit<u8>]) {
    let (init, uninit) = buf.split_at_mut(init);
    let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast::<u8>(), init.len());
    (init, uninit)
}
