summaryrefslogtreecommitdiff
path: root/crimtag/src
diff options
context:
space:
mode:
Diffstat (limited to 'crimtag/src')
-rw-r--r--crimtag/src/context.rs71
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> {
107impl<'a> fmt::Debug for MappedValue<'a> { 107impl<'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
129macro_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
139basic_mapped_value_from!(i8, Int8);
140basic_mapped_value_from!(i16, Int16);
141basic_mapped_value_from!(i32, Int32);
142basic_mapped_value_from!(i64, Int64);
143basic_mapped_value_from!(u8, UInt8);
144basic_mapped_value_from!(u16, UInt16);
145basic_mapped_value_from!(u32, UInt32);
146basic_mapped_value_from!(u64, UInt64);
147basic_mapped_value_from!(f32, Float32);
148basic_mapped_value_from!(f64, Float64);
149basic_mapped_value_from!(bool, Bool);
150
151impl<'a> From<&'a String> for MappedValue<'a> {
152 fn from(val: &'a String ) -> MappedValue<'a> {
153 MappedValue::String(val)
154 }
155}
156
157impl<'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
163impl<'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
130pub struct StatefulContext<'a> { 169pub struct StatefulContext<'a> {