rseip_core/codec/
encode.rs1mod impls;
8mod slice;
9
10use crate::Error;
11use bytes::BytesMut;
12pub use slice::SliceContainer;
13
14pub trait Encoder {
15 type Error: Error;
16
17 fn encode_bool(&mut self, item: bool, buf: &mut BytesMut) -> Result<(), Self::Error>;
18 fn encode_i8(&mut self, item: i8, buf: &mut BytesMut) -> Result<(), Self::Error>;
19 fn encode_u8(&mut self, item: u8, buf: &mut BytesMut) -> Result<(), Self::Error>;
20 fn encode_i16(&mut self, item: i16, buf: &mut BytesMut) -> Result<(), Self::Error>;
21 fn encode_u16(&mut self, item: u16, buf: &mut BytesMut) -> Result<(), Self::Error>;
22 fn encode_i32(&mut self, item: i32, buf: &mut BytesMut) -> Result<(), Self::Error>;
23 fn encode_u32(&mut self, item: u32, buf: &mut BytesMut) -> Result<(), Self::Error>;
24 fn encode_i64(&mut self, item: i64, buf: &mut BytesMut) -> Result<(), Self::Error>;
25 fn encode_u64(&mut self, item: u64, buf: &mut BytesMut) -> Result<(), Self::Error>;
26 fn encode_f32(&mut self, item: f32, buf: &mut BytesMut) -> Result<(), Self::Error>;
27 fn encode_f64(&mut self, item: f64, buf: &mut BytesMut) -> Result<(), Self::Error>;
28 fn encode_i128(&mut self, item: i128, buf: &mut BytesMut) -> Result<(), Self::Error>;
29 fn encode_u128(&mut self, item: u128, buf: &mut BytesMut) -> Result<(), Self::Error>;
30
31 #[inline]
32 fn encode<T>(&mut self, item: T, buf: &mut BytesMut) -> Result<(), Self::Error>
33 where
34 T: Encode + Sized,
35 Self: Sized,
36 {
37 item.encode(buf, self)
38 }
39
40 #[inline]
41 fn encode_by_ref<T>(&mut self, item: &T, buf: &mut BytesMut) -> Result<(), Self::Error>
42 where
43 T: Encode + ?Sized,
44 Self: Sized,
45 {
46 item.encode_by_ref(buf, self)
47 }
48}
49
50pub trait Encode {
51 #[inline]
53 fn encode<A: Encoder>(self, buf: &mut BytesMut, encoder: &mut A) -> Result<(), A::Error>
54 where
55 Self: Sized,
56 {
57 self.encode_by_ref(buf, encoder)
58 }
59
60 fn encode_by_ref<A: Encoder>(
62 &self,
63 buf: &mut BytesMut,
64 encoder: &mut A,
65 ) -> Result<(), A::Error>;
66
67 fn bytes_count(&self) -> usize;
69}