summaryrefslogtreecommitdiff
path: root/src/parameter.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parameter.rs')
-rw-r--r--src/parameter.rs110
1 files changed, 0 insertions, 110 deletions
diff --git a/src/parameter.rs b/src/parameter.rs
index 8df7625..cee6342 100644
--- a/src/parameter.rs
+++ b/src/parameter.rs
@@ -114,116 +114,6 @@ impl Parameter {
}
}
-pub trait FromToParameter: Sized {
- fn from_parameter(p: Parameter) -> Option<Self>;
- fn to_parameter(self) -> Parameter;
-}
-
-
-
-impl FromToParameter for Parameter {
- fn from_parameter(p: Parameter) -> Option<Self>{
- Some(p)
- }
- fn to_parameter(self) -> Parameter {
- self
- }
-}
-
-macro_rules! tofrom {
- ($paramtyp: ident $typ: ty) => {
- impl FromToParameter for $typ {
- fn from_parameter(p: Parameter) -> Option<Self>{
- if let Parameter::$paramtyp(i) = p {
- Some(i)
- } else {
- None
- }
- }
- fn to_parameter(self) -> Parameter {
- Parameter::$paramtyp(self)
- }
- }
- }
-}
-
-tofrom!(Int i64);
-tofrom!(Float f64);
-tofrom!(Bool bool);
-tofrom!(String String);
-tofrom!(Pos Pos);
-tofrom!(Template Template);
-tofrom!(Interaction Interactable);
-
-
-impl<T> FromToParameter for Vec<T>
-where
- T: FromToParameter,
-{
- fn from_parameter(p: Parameter) -> Option<Self>{
- if let Parameter::List(items) = p{
- let mut v = Self::new();
- for item in items {
- if let Some(t) = T::from_parameter(item){
- v.push(t);
- } else {
- return None;
- }
- }
- Some(v)
- } else {
- None
- }
- }
- fn to_parameter(self) -> Parameter {
- Parameter::List(self.into_iter().map(|item| item.to_parameter()).collect())
- }
-}
-
-impl<T, U> FromToParameter for (T, U)
-where
- T: FromToParameter,
- U: FromToParameter,
-{
- fn from_parameter(p: Parameter) -> Option<Self> {
- if let Parameter::List(mut items) = p {
- if items.len() == 2 {
- return Some((
- T::from_parameter(items.remove(0))?,
- U::from_parameter(items.remove(0))?
- ))
- }
- }
- None
- }
- fn to_parameter(self) -> Parameter {
- Parameter::List(vec![self.0.to_parameter(), self.1.to_parameter()])
- }
-}
-
-impl<T, U, V> FromToParameter for (T, U, V)
-where
- T: FromToParameter,
- U: FromToParameter,
- V: FromToParameter,
-{
- fn from_parameter(p: Parameter) -> Option<Self> {
- if let Parameter::List(mut items) = p {
- if items.len() == 3 {
- return Some((
- T::from_parameter(items.remove(0))?,
- U::from_parameter(items.remove(0))?,
- V::from_parameter(items.remove(0))?
- ))
- }
- }
- None
- }
- fn to_parameter(self) -> Parameter {
- Parameter::List(vec![self.0.to_parameter(), self.1.to_parameter(), self.2.to_parameter()])
- }
-}
-
#[cfg(test)]
mod tests {
use super::*;