mod bytes_codec; mod length_codec; #[cfg(feature = "ws")] mod websocket; pub use bytes_codec::BytesCodec; pub use length_codec::LengthCodec; #[cfg(feature = "ws")] pub use websocket::{WebSocketCodec, WebSocketDecoder, WebSocketEncoder}; use crate::Result; pub trait Codec: Decoder + Encoder + Send + Sync + 'static + Unpin { type Item: Send + Sync; } pub trait Encoder { type EnItem; fn encode(&self, src: &Self::EnItem, dst: &mut [u8]) -> Result; } pub trait Decoder { type DeItem; fn decode(&self, src: &mut [u8]) -> Result>; }