cds 0.10.0

Collection of Optimized Data Structures
Documentation
use crate::{arraystring::ArrayString, len::LengthType, mem::SpareMemoryPolicy};
use core::ops::{Deref, DerefMut};

impl<L, SM, const C: usize> Deref for ArrayString<C, L, SM>
where
    L: LengthType,
    SM: SpareMemoryPolicy<u8>,
{
    type Target = str;

    #[inline]
    fn deref(&self) -> &Self::Target {
        self.as_str()
    }
}

impl<L, SM, const C: usize> DerefMut for ArrayString<C, L, SM>
where
    L: LengthType,
    SM: SpareMemoryPolicy<u8>,
{
    #[inline]
    fn deref_mut(&mut self) -> &mut Self::Target {
        self.as_mut_str()
    }
}

#[cfg(test)]
mod testing {
    use crate as cds;
    use cds::array_str;

    #[test]
    fn test_deref() {
        let s = array_str![8; "cds"];
        assert_eq!(&*s, "cds");
    }

    #[test]
    fn test_deref_mut() {
        let mut s = array_str![8; "cds"];
        (*s).make_ascii_uppercase();
        assert_eq!(&*s, "CDS");
    }
}