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}