diff options
Diffstat (limited to 'crimtag')
| -rw-r--r-- | crimtag/src/context.rs | 71 |
1 files changed, 55 insertions, 16 deletions
diff --git a/crimtag/src/context.rs b/crimtag/src/context.rs index 6f8e04f..15448ee 100644 --- a/crimtag/src/context.rs +++ b/crimtag/src/context.rs | |||
| @@ -107,24 +107,63 @@ pub enum MappedValue<'a> { | |||
| 107 | impl<'a> fmt::Debug for MappedValue<'a> { | 107 | impl<'a> fmt::Debug for MappedValue<'a> { |
| 108 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | 108 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { |
| 109 | match self { | 109 | match self { |
| 110 | MappedValue::<'a>::Struct(_) => write!(f, "MappedValue"), | 110 | MappedValue::<'a>::Struct(_) => write!(f, "MappedValue"), |
| 111 | MappedValue::<'a>::List(_) => write!(f, "MappedList"), | 111 | MappedValue::<'a>::List(_) => write!(f, "MappedList"), |
| 112 | MappedValue::<'a>::Str(v) => write!(f, "{:?}", v), | 112 | MappedValue::<'a>::Str(v) => write!(f, "{:?}", v), |
| 113 | MappedValue::<'a>::String(v) => write!(f, "{:?}", v), | 113 | MappedValue::<'a>::String(v) => write!(f, "{:?}", v), |
| 114 | MappedValue::<'a>::Int8(v) => write!(f, "{:?}", v), | 114 | MappedValue::<'a>::Int8(v) => write!(f, "{:?}", v), |
| 115 | MappedValue::<'a>::Int16(v) => write!(f, "{:?}", v), | 115 | MappedValue::<'a>::Int16(v) => write!(f, "{:?}", v), |
| 116 | MappedValue::<'a>::Int32(v) => write!(f, "{:?}", v), | 116 | MappedValue::<'a>::Int32(v) => write!(f, "{:?}", v), |
| 117 | MappedValue::<'a>::Int64(v) => write!(f, "{:?}", v), | 117 | MappedValue::<'a>::Int64(v) => write!(f, "{:?}", v), |
| 118 | MappedValue::<'a>::UInt8(v) => write!(f, "{:?}", v), | 118 | MappedValue::<'a>::UInt8(v) => write!(f, "{:?}", v), |
| 119 | MappedValue::<'a>::UInt16(v) => write!(f, "{:?}", v), | 119 | MappedValue::<'a>::UInt16(v) => write!(f, "{:?}", v), |
| 120 | MappedValue::<'a>::UInt32(v) => write!(f, "{:?}", v), | 120 | MappedValue::<'a>::UInt32(v) => write!(f, "{:?}", v), |
| 121 | MappedValue::<'a>::UInt64(v) => write!(f, "{:?}", v), | 121 | MappedValue::<'a>::UInt64(v) => write!(f, "{:?}", v), |
| 122 | MappedValue::<'a>::Float32(v) => write!(f, "{:?}", v), | 122 | MappedValue::<'a>::Float32(v) => write!(f, "{:?}", v), |
| 123 | MappedValue::<'a>::Float64(v) => write!(f, "{:?}", v), | 123 | MappedValue::<'a>::Float64(v) => write!(f, "{:?}", v), |
| 124 | MappedValue::<'a>::Bool(v) => write!(f, "{:?}", v), | 124 | MappedValue::<'a>::Bool(v) => write!(f, "{:?}", v), |
| 125 | } | 125 | } |
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | macro_rules! basic_mapped_value_from { | ||
| 130 | ( $x:ident, $y:ident ) => { | ||
| 131 | impl<'a> From<&$x> for MappedValue<'a> { | ||
| 132 | fn from(val: &$x) -> MappedValue<'a> { | ||
| 133 | MappedValue::$y(*val) | ||
| 134 | } | ||
| 135 | } | ||
| 136 | }; | ||
| 137 | } | ||
| 138 | |||
| 139 | basic_mapped_value_from!(i8, Int8); | ||
| 140 | basic_mapped_value_from!(i16, Int16); | ||
| 141 | basic_mapped_value_from!(i32, Int32); | ||
| 142 | basic_mapped_value_from!(i64, Int64); | ||
| 143 | basic_mapped_value_from!(u8, UInt8); | ||
| 144 | basic_mapped_value_from!(u16, UInt16); | ||
| 145 | basic_mapped_value_from!(u32, UInt32); | ||
| 146 | basic_mapped_value_from!(u64, UInt64); | ||
| 147 | basic_mapped_value_from!(f32, Float32); | ||
| 148 | basic_mapped_value_from!(f64, Float64); | ||
| 149 | basic_mapped_value_from!(bool, Bool); | ||
| 150 | |||
| 151 | impl<'a> From<&'a String> for MappedValue<'a> { | ||
| 152 | fn from(val: &'a String ) -> MappedValue<'a> { | ||
| 153 | MappedValue::String(val) | ||
| 154 | } | ||
| 155 | } | ||
| 156 | |||
| 157 | impl<'a, T: MappedStructure<'a>> From<&'a Vec<T>> for MappedValue<'a> { | ||
| 158 | fn from(val: &'a Vec<T> ) -> MappedValue<'a> { | ||
| 159 | MappedValue::List(val) | ||
| 160 | } | ||
| 161 | } | ||
| 162 | |||
| 163 | impl<'a,T: MappedStructure<'a>> From<&'a T> for MappedValue<'a> { | ||
| 164 | fn from(val: &'a T ) -> MappedValue<'a> { | ||
| 165 | MappedValue::Struct(val) | ||
| 126 | } | 166 | } |
| 127 | |||
| 128 | } | 167 | } |
| 129 | 168 | ||
| 130 | pub struct StatefulContext<'a> { | 169 | pub struct StatefulContext<'a> { |
