#[cfg(test)]
mod tests;
pub(crate) use self::aligned::Aligned;
mod aligned;
#[cfg(feature = "alloc")]
pub(crate) use self::aligned_buf::AlignedBuf;
#[cfg(feature = "alloc")]
mod aligned_buf;
#[cfg(feature = "alloc")]
pub(crate) use self::unaligned_buf::UnalignedBuf;
#[cfg(feature = "alloc")]
mod unaligned_buf;
#[cfg(feature = "tokio")]
pub(crate) use self::alloc::Alloc;
#[cfg(feature = "tokio")]
mod alloc;
pub(crate) const MAX_ARRAY_LENGTH: u32 = 1u32 << 26;
#[cfg(feature = "alloc")]
pub(crate) const MAX_BODY_LENGTH: u32 = 1u32 << 27;
use core::mem::align_of;
#[inline(always)]
pub(crate) fn padding_to<T>(len: usize) -> usize {
unsafe { padding_to_with(align_of::<T>(), len) }
}
#[inline(always)]
pub(crate) unsafe fn padding_to_with(align: usize, len: usize) -> usize {
let mask = align - 1;
(align - (len & mask)) & mask
}
#[cfg(feature = "alloc")]
#[inline(always)]
const fn max_size_for_align(align: usize) -> usize {
isize::MAX as usize - (align - 1)
}