primitives 0.1.0

Primitves Asm
use super::Bytes;
use alloy_rlp::{Decodable, Encodable};

impl Encodable for Bytes {
    #[inline]
    fn length(&self) -> usize {
        self.inner.length()
    }

    #[inline]
    fn encode(&self, out: &mut dyn bytes::BufMut) {
        self.inner.encode(out);
    }
}

impl Decodable for Bytes {
    #[inline]
    fn decode(buf: &mut &[u8]) -> Result<Self, alloy_rlp::Error> {
        bytes::Bytes::decode(buf).map(|inner| Self { 
            inner: inner.to_vec().into_boxed_slice()
        })
    }
}

#[test]
fn test_rlp_decode_contents() {
    let original = Bytes::from(vec![0xDE, 0xAD, 0xBE, 0xEF]);
    let mut encoded = Vec::new();
    original.encode(&mut encoded);
    
    let mut slice = encoded.as_slice();
    let decoded = Bytes::decode(&mut slice).unwrap();
    
    assert_eq!(decoded.as_ref(), [0xDE, 0xAD, 0xBE, 0xEF]);
}