|
@@ -1,5 +1,5 @@
|
|
|
use super::Modelable;
|
|
|
-use serde::de::Visitor;
|
|
|
+use serde::de::{Visitor, IntoDeserializer};
|
|
|
|
|
|
pub struct RowDeserializer<'de, 'l> {
|
|
|
row: &'de sqlite::Statement<'l>,
|
|
@@ -108,6 +108,13 @@ impl<'de, 'a, 'l> serde::de::Deserializer<'de> for &'a mut RowDeserializer<'de,
|
|
|
res
|
|
|
}
|
|
|
|
|
|
+ fn deserialize_enum<V: Visitor<'de>>(self, _name: &'static str, _variants: &'static [&'static str], v: V) -> Result<V::Value, Self::Error> {
|
|
|
+ let built : (String, _) = Modelable::build_from(self.row, self.col_index)
|
|
|
+ .map_err(|e| Self::Error::LoadError(e.to_string()))?;
|
|
|
+
|
|
|
+ v.visit_enum(built.0.into_deserializer())
|
|
|
+ }
|
|
|
+
|
|
|
fn deserialize_struct<V: Visitor<'de>>(
|
|
|
self,
|
|
|
_name: &'static str,
|
|
@@ -128,7 +135,7 @@ impl<'de, 'a, 'l> serde::de::Deserializer<'de> for &'a mut RowDeserializer<'de,
|
|
|
serde::forward_to_deserialize_any! {
|
|
|
i128 u128 f32 f64 char str
|
|
|
bytes option unit unit_struct seq tuple
|
|
|
- tuple_struct map enum identifier ignored_any
|
|
|
+ tuple_struct map identifier ignored_any
|
|
|
}
|
|
|
}
|
|
|
|