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}