humidity_core/serde/
mod.rs

1//! Serialization and deserialization
2
3pub use de::Deserializer;
4pub use ser::Serializer;
5
6mod de;
7mod ser;
8
9// TODO: Implement Display
10#[derive(Debug, PartialEq)]
11pub enum Error {
12    ErrBufferSmall,
13    Other,
14}
15
16pub trait Serializable
17where
18    Self: Sized,
19{
20    fn serialize(&self, ser: &mut Serializer) -> Result<usize, Error>;
21}
22
23pub trait Deserializable
24where
25    Self: Sized,
26{
27    fn deserialize(de: &mut Deserializer) -> Result<Self, Error>;
28}
29
30pub fn serialize<T>(value: &T, out: &mut [u8]) -> Result<usize, Error>
31where
32    T: Serializable,
33{
34    let mut se = Serializer::new(out);
35    value.serialize(&mut se)
36}
37
38pub fn deserialize<T>(out: &[u8]) -> Result<T, Error>
39where
40    T: Deserializable,
41{
42    let mut de = Deserializer::new(out);
43    T::deserialize(&mut de)
44}