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}