selium_std/traits/
codec.rs

1use anyhow::Result;
2use bytes::{Bytes, BytesMut};
3
4/// Provides an `encode` method for implementors to build their own encoder types.
5///
6/// See [codecs](crate::codecs) for more information.
7pub trait MessageEncoder {
8    type Item: Clone;
9
10    fn encode(&self, item: Self::Item) -> Result<Bytes>;
11}
12
13/// Provides a `decode` method for implementors to build their own decoder types.
14///
15/// See [codecs](crate::codecs) for more information.
16pub trait MessageDecoder {
17    type Item;
18
19    fn decode(&self, buffer: &mut BytesMut) -> Result<Self::Item>;
20}