pub trait Sealed {}
impl<T> Sealed for &mut T where T: Sealed {}
pub trait BitPackedCheck<const BITS: u8> {
const CHECK: ();
}
impl<const BITS: u8, T> BitPackedCheck<BITS> for T {
const CHECK: () = assert!(
BITS > 0 && BITS <= 64 && BITS as usize <= core::mem::size_of::<Self>() * 8,
"Bit width must be 1-64 and not exceed type size"
);
}
pub trait IsPrimitive: Copy + 'static {}
impl IsPrimitive for u8 {}
impl IsPrimitive for i8 {}
impl IsPrimitive for u16 {}
impl IsPrimitive for i16 {}
impl IsPrimitive for u32 {}
impl IsPrimitive for i32 {}
impl IsPrimitive for u64 {}
impl IsPrimitive for i64 {}
impl IsPrimitive for u128 {}
impl IsPrimitive for i128 {}
impl IsPrimitive for f32 {}
impl IsPrimitive for f64 {}