small_len 1.1.2

A small library for storing the length in the smallest internal type.
Documentation
#[allow(unused_imports)]
use crate::{impl_len, impl_len_kv, Len, Length, SmallLength};

#[cfg(feature = "indexmap")]
impl_len_kv!(indexmap::IndexMap<K, V>);


#[cfg(feature = "bytes")]
impl_len!(bytes::Bytes bytes::BytesMut);

#[cfg(feature = "bumpalo")]
impl Len for bumpalo::Bump {
    #[inline]
    fn length(&self) -> Length {
        self.allocated_bytes().into()
    }
}

#[cfg(feature = "var_num")]
impl From<SmallLength> for var_num::VarUInt {
    #[inline]
    fn from(value: SmallLength) -> Self {
        match value {
            SmallLength::Byte(b) => var_num::VarUInt::U8(b),
            SmallLength::Word(b) => var_num::VarUInt::U16(b),
            SmallLength::Double(b) => var_num::VarUInt::U32(b),
            SmallLength::Quad(b) => var_num::VarUInt::U64(b),
        }
    }
}

#[cfg(feature = "var_num")]
impl From<SmallLength> for var_num::VarNum {
    #[inline]
    fn from(value: SmallLength) -> Self {
        var_num::VarNum::UInt(value.into())
    }
}

#[cfg(feature = "var_num")]
impl From<Length> for var_num::VarNum {
    #[inline]
    fn from(value: Length) -> Self {
        value.index().into()
    }
}

#[cfg(feature = "var_num")]
impl From<Length> for var_num::VarUInt {
    #[inline]
    fn from(value: Length) -> Self {
        value.index().into()
    }
}