1 use bytes::BytesMut;
2 use std::io;
3 
4 /// Trait of helper objects to write out messages as bytes, for use with
5 /// [`FramedWrite`].
6 ///
7 /// [`FramedWrite`]: crate::codec::FramedWrite
8 pub trait Encoder<Item> {
9     /// The type of encoding errors.
10     ///
11     /// [`FramedWrite`] requires `Encoder`s errors to implement `From<io::Error>`
12     /// in the interest of letting it return `Error`s directly.
13     ///
14     /// [`FramedWrite`]: crate::codec::FramedWrite
15     type Error: From<io::Error>;
16 
17     /// Encodes a frame into the buffer provided.
18     ///
19     /// This method will encode `item` into the byte buffer provided by `dst`.
20     /// The `dst` provided is an internal buffer of the [`FramedWrite`] instance and
21     /// will be written out when possible.
22     ///
23     /// [`FramedWrite`]: crate::codec::FramedWrite
encode(&mut self, item: Item, dst: &mut BytesMut) -> Result<(), Self::Error>24     fn encode(&mut self, item: Item, dst: &mut BytesMut) -> Result<(), Self::Error>;
25 }
26