Skip to main content

reddb/serializer/
json.rs

1use std::default::Default;
2use std::fmt::Debug;
3
4use super::*;
5
6#[derive(Debug)]
7pub struct Json {
8    format: Serializers,
9}
10
11impl Default for Json {
12    fn default() -> Json {
13        Json {
14            format: Serializers::Json(".json".to_owned()),
15        }
16    }
17}
18
19#[cfg(feature = "json_ser")]
20impl<'a> Serializer<'a> for Json {
21    fn format(&self) -> &Serializers {
22        &self.format
23    }
24
25    fn serialize<T>(&self, data: &T) -> Result<Vec<u8>, Error>
26    where
27        for<'de> T: serde::Serialize + serde::Deserialize<'de>,
28    {
29        let mut vec = serde_json::to_vec(data)?;
30        vec.extend(b"\n");
31        Ok(vec)
32    }
33    fn deserialize<T>(&self, data: &[u8]) -> Result<T, Error>
34    where
35        for<'de> T: serde::Serialize + serde::Deserialize<'de>,
36    {
37        let vec = serde_json::from_slice::<T>(data)?;
38        Ok(vec)
39    }
40}