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 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 |
24 | fn encode(&mut self, item: Item, dst: &mut BytesMut) -> Result<(), Self::Error>; |
25 | } |
26 | |