]> git.lizzy.rs Git - mt_ser.git/blob - src/lib.rs
143b397b3be213005dc4eb5a89c81f802ce73ffa
[mt_ser.git] / src / lib.rs
1 pub use enumset;
2
3 #[cfg(feature = "random")]
4 pub use generate_random;
5
6 #[cfg(feature = "random")]
7 pub use rand;
8
9 #[cfg(feature = "serde")]
10 pub use serde;
11
12 use enumset::{EnumSet, EnumSetType};
13 use mt_data_derive::mt_derive;
14 pub use mt_data_derive::{MtDeserialize, MtSerialize};
15 use std::{collections::HashMap, fmt, io};
16 use thiserror::Error;
17
18 #[cfg(feature = "serde")]
19 use serde::{Deserialize, Serialize};
20
21 #[cfg(feature = "random")]
22 use generate_random::GenerateRandom;
23
24 #[derive(Error, Debug)]
25 pub enum SerializeError {
26     #[error("{0}")]
27     IoError(#[from] io::Error),
28     #[error("serialization is not implemented")]
29     Unimplemented,
30 }
31
32 #[derive(Error, Debug)]
33 pub enum DeserializeError {
34     #[error("{0}")]
35     IoError(#[from] io::Error),
36     #[error("deserialization is not implemented")]
37     Unimplemented,
38 }
39
40 pub trait MtSerialize: Sized {
41     fn mt_serialize<W: io::Write>(&self, writer: &mut W) -> Result<(), SerializeError>;
42 }
43
44 pub trait MtDeserialize: Sized {
45     fn mt_deserialize<R: io::Read>(reader: &mut R) -> Result<Self, DeserializeError>;
46 }
47
48 mod to_clt;
49 mod to_srv;
50
51 pub use to_clt::*;
52 pub use to_srv::*;