serde_helpers/
yaml.rs

1use serde::Serialize;
2use serde::de::DeserializeOwned;
3use serde_yaml;
4
5use Error;
6
7pub trait DeserializeYaml: DeserializeOwned {
8    fn from_yaml_str(s: &str) -> Result<Self, Error> {
9        serde_yaml::from_str(s).map_err(Error::from)
10    }
11
12    fn from_yaml_slice(v: &[u8]) -> Result<Self, Error> {
13        serde_yaml::from_slice(v).map_err(Error::from)
14    }
15}
16
17impl<T> DeserializeYaml for T
18where
19    T: DeserializeOwned,
20{
21}
22
23pub trait SerializeYaml: Serialize {
24    fn to_yaml_string(&self) -> Result<String, Error> {
25        serde_yaml::to_string(self).map_err(Error::from)
26    }
27
28    fn to_yaml_vec(&self) -> Result<Vec<u8>, Error> {
29        serde_yaml::to_vec(self).map_err(Error::from)
30    }
31}
32
33impl<T> SerializeYaml for T
34where
35    T: Serialize,
36{
37}