flat_rs/
encode.rs

1mod encoder;
2mod error;
3
4use crate::filler::Filler;
5
6pub use encoder::Encoder;
7pub use error::Error;
8
9pub trait Encode {
10    fn encode(&self, e: &mut Encoder) -> Result<(), Error>;
11}
12
13impl Encode for bool {
14    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
15        e.bool(*self);
16
17        Ok(())
18    }
19}
20
21impl Encode for u8 {
22    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
23        e.u8(*self)?;
24
25        Ok(())
26    }
27}
28
29impl Encode for i128 {
30    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
31        e.big_integer(*self);
32
33        Ok(())
34    }
35}
36
37impl Encode for isize {
38    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
39        e.integer(*self);
40
41        Ok(())
42    }
43}
44
45impl Encode for usize {
46    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
47        e.word(*self);
48
49        Ok(())
50    }
51}
52
53impl Encode for char {
54    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
55        e.char(*self);
56
57        Ok(())
58    }
59}
60
61impl Encode for &str {
62    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
63        e.utf8(self)?;
64
65        Ok(())
66    }
67}
68
69impl Encode for String {
70    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
71        e.utf8(self)?;
72
73        Ok(())
74    }
75}
76
77impl Encode for Vec<u8> {
78    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
79        e.bytes(self)?;
80
81        Ok(())
82    }
83}
84
85impl Encode for &[u8] {
86    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
87        e.bytes(self)?;
88
89        Ok(())
90    }
91}
92
93impl<T: Encode> Encode for Box<T> {
94    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
95        self.as_ref().encode(e)?;
96
97        Ok(())
98    }
99}
100
101impl Encode for Filler {
102    fn encode(&self, e: &mut Encoder) -> Result<(), Error> {
103        e.filler();
104
105        Ok(())
106    }
107}