use bytes::{Buf, Bytes, BytesMut}; use std::io; use super::{Decoder, Encoder}; /// Bytes codec. /// /// Reads/Writes chunks of bytes from a stream. #[derive(Debug, Copy, Clone)] pub struct BytesCodec; impl Encoder for BytesCodec { type Error = io::Error; #[inline] fn encode(&mut self, item: Bytes, dst: &mut BytesMut) -> Result<(), Self::Error> { dst.extend_from_slice(item.chunk()); Ok(()) } } impl Decoder for BytesCodec { type Item = BytesMut; type Error = io::Error; fn decode(&mut self, src: &mut BytesMut) -> Result, Self::Error> { if src.is_empty() { Ok(None) } else { Ok(Some(src.split())) } } }