dencode/encoder.rs
1use std::io::Error;
2
3use bytes::BytesMut;
4
5use super::fuse::Fuse;
6
7/// Encoding of messages as bytes, for use with `FramedWrite`.
8pub trait Encoder<Item> {
9 /// The type of encoding errors.
10 type Error: From<Error>;
11
12 /// Encodes an item into the `BytesMut` provided by dst.
13 fn encode(&mut self, item: Item, dst: &mut BytesMut) -> Result<(), Self::Error>;
14}
15
16impl<T, Item, U: Encoder<Item>> Encoder<Item> for Fuse<T, U> {
17 type Error = U::Error;
18
19 fn encode(&mut self, item: Item, dst: &mut BytesMut) -> Result<(), Self::Error> {
20 self.codec.encode(item, dst)
21 }
22}