reddb/serializer/
mod.rs

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}