summaryrefslogtreecommitdiff
path: root/src/parameterexpression.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parameterexpression.rs')
-rw-r--r--src/parameterexpression.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/parameterexpression.rs b/src/parameterexpression.rs
index 65ad4c8..01f882f 100644
--- a/src/parameterexpression.rs
+++ b/src/parameterexpression.rs
@@ -2,11 +2,12 @@
use std::collections::HashMap;
use rand::Rng;
use serde_json::{Value, json};
+use serde::{Deserialize, Deserializer, de};
use crate::{
parameter::{Parameter, ParameterType},
Template,
template::{SaveOption, EntityType},
- Result,
+ Result as AnyResult,
aerr,
PResult,
perr
@@ -171,7 +172,7 @@ impl ParameterExpression {
}
#[allow(dead_code)]
- pub fn get_type(&self, arguments: &[(String, ParameterType, Option<Parameter>)]) -> Result<ParameterType>{
+ pub fn get_type(&self, arguments: &[(String, ParameterType, Option<Parameter>)]) -> AnyResult<ParameterType>{
Ok(match self {
Self::Constant(param) => param.paramtype(),
Self::List(_) => ParameterType::List,
@@ -202,3 +203,17 @@ impl ParameterExpression {
})
}
}
+
+// impl Serialize for ParameterExpression {
+// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+// where S: Serializer {
+// self.to_json().serialize(serializer)
+// }
+// }
+impl<'de> Deserialize<'de> for ParameterExpression {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where D: Deserializer<'de> {
+ Self::from_json(&Value::deserialize(deserializer)?).map_err(|e| de::Error::custom(e.text))
+ }
+}
+