diff options
Diffstat (limited to 'src/parameter.rs')
| -rw-r--r-- | src/parameter.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/parameter.rs b/src/parameter.rs index 99ecdd7..c307a27 100644 --- a/src/parameter.rs +++ b/src/parameter.rs @@ -1,5 +1,6 @@ use serde_json::{Value, json}; +use serde::{de, Serialize, Deserialize, Serializer, Deserializer}; use crate::{ Template, Pos, @@ -114,6 +115,22 @@ impl Parameter { } } + +impl Serialize for Parameter { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where S: Serializer, + { + self.to_json().serialize(serializer) + } +} +impl<'de> Deserialize<'de> for Parameter { + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where D: Deserializer<'de>, + { + Self::guess_from_json(&Value::deserialize(deserializer)?).map_err(|e| de::Error::custom(e.text)) + } +} + #[cfg(test)] mod tests { use super::*; |
