diff options
| author | troido <troido@protonmail.com> | 2020-09-24 09:38:18 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-09-24 09:38:18 +0200 |
| commit | 523a635dc88bc7890a0e1d3c062a8165259761d6 (patch) | |
| tree | 56b0e379349250ecbf75eda6ccdb1f6f791dcbb1 /src/parameter.rs | |
| parent | daaf3a25e9c6cc1843b0a3aff71d4142f83dde10 (diff) | |
don't try to read into the json data structure all manually
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::*; |
