jppe 1.1.1

This is a byte stream structured serialization and deserialization library.
Documentation
use crate::std::*;
use crate::{ByteEncode, BorrowByteEncode};


impl<T, const N: usize> ByteEncode for [T; N]
where
    T: ByteEncode,
{
    fn encode(&self, input: &mut Vec<u8>, cattr: Option<&crate::ContainerAttrModifiers>, fattr: Option<&crate::FieldAttrModifiers>)
        where 
            Self: Sized
    {
        for v in self {
            v.encode(input, cattr, fattr)
        }
    }
}


impl<T, const N: usize> BorrowByteEncode for [T; N]
where
    T: BorrowByteEncode,
{
    fn encode(&self, input: &mut Vec<u8>, cattr: Option<&crate::ContainerAttrModifiers>, fattr: Option<&crate::FieldAttrModifiers>)
        where 
            Self: Sized
    {
        for v in self {
            v.encode(input, cattr, fattr)
        }
    }
}


#[cfg(test)]
mod tests {
    use crate::ByteEncode;

    #[test]
    fn test_encode_array() {
        let mut buf = vec![];
        let value = [0x01_u8, 0x02];
        value.encode(&mut buf, None, None);
        assert_eq!(buf, [0x01, 0x02]);

        let mut buf = vec![];
        let value = [0x01_u16, 0x02];
        value.encode(&mut buf, None, None);
        assert_eq!(buf, [0x00, 0x01, 0x00, 0x02]);
    }
}