use crate::{ codec::{Codec, Decoder, Encoder}, Result, }; #[derive(Clone)] pub struct BytesCodec {} impl Codec for BytesCodec { type Item = Vec; } impl Encoder for BytesCodec { type EnItem = Vec; fn encode(&self, src: &Self::EnItem, dst: &mut [u8]) -> Result { dst[..src.len()].copy_from_slice(src); Ok(src.len()) } } impl Decoder for BytesCodec { type DeItem = Vec; fn decode(&self, src: &mut [u8]) -> Result> { if src.is_empty() { Ok(None) } else { Ok(Some((src.len(), src.to_vec()))) } } }