1use failure::Error;
2use serde::{Deserialize, Serialize};
3use std::default::Default;
4use std::result::Result;
5
6mod bin;
7mod json;
8mod ron;
9mod yaml;
10
11#[cfg(feature = "bin_ser")]
12pub use self::bin::Bin;
13#[cfg(feature = "json_ser")]
14pub use self::json::Json;
15#[cfg(feature = "ron_ser")]
16pub use self::ron::Ron;
17#[cfg(feature = "yaml_ser")]
18pub use self::yaml::Yaml;
19
20#[derive(Debug, Clone)]
21pub enum Serializers {
22 Bin(String),
23 Json(String),
24 Yaml(String),
25 Ron(String),
26}
27
28pub trait Serializer<'a>: Default {
29 fn format(&self) -> &Serializers;
30 fn serialize<T>(&self, val: &T) -> Result<Vec<u8>, Error>
31 where
32 for<'de> T: Serialize + Deserialize<'de>;
33
34 fn deserialize<T>(&self, val: &[u8]) -> Result<T, Error>
35 where
36 for<'de> T: Serialize + Deserialize<'de>;
37}