3 #[cfg(feature = "random")]
4 pub use generate_random;
6 #[cfg(feature = "random")]
9 #[cfg(feature = "serde")]
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};
18 #[cfg(feature = "serde")]
19 use serde::{Deserialize, Serialize};
21 #[cfg(feature = "random")]
22 use generate_random::GenerateRandom;
24 #[derive(Error, Debug)]
25 pub enum SerializeError {
27 IoError(#[from] io::Error),
28 #[error("serialization is not implemented")]
32 #[derive(Error, Debug)]
33 pub enum DeserializeError {
35 IoError(#[from] io::Error),
36 #[error("deserialization is not implemented")]
40 pub trait MtSerialize: Sized {
41 fn mt_serialize<W: io::Write>(&self, writer: &mut W) -> Result<(), SerializeError>;
44 pub trait MtDeserialize: Sized {
45 fn mt_deserialize<R: io::Read>(reader: &mut R) -> Result<Self, DeserializeError>;