summaryrefslogtreecommitdiff
path: root/src/parameter.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parameter.rs')
-rw-r--r--src/parameter.rs17
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::*;