Fixed expand not working with deseralization of full objects instead of iris
This commit is contained in:
parent
bd93207c25
commit
94af6929ab
|
@ -2,6 +2,8 @@ use super::resolve::Resolver;
|
|||
use std::{fmt, marker::PhantomData};
|
||||
|
||||
use serde::{de::Visitor, Deserialize, Deserializer};
|
||||
static TYPE_STR: &str = std::any::type_name::<&str>();
|
||||
static TYPE_STRING: &str = std::any::type_name::<String>();
|
||||
|
||||
// Allows a value that's a string to be expanded into an object AND the serialization of that object itself
|
||||
// TODO: deserializing the actual object isnt supported atm LOL
|
||||
|
@ -26,13 +28,6 @@ where
|
|||
formatter.write_str(std::any::type_name::<Out>())
|
||||
}
|
||||
|
||||
fn visit_map<A>(self, map: A) -> Result<Self::Value, A::Error>
|
||||
where
|
||||
A: serde::de::MapAccess<'de>,
|
||||
{
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
|
||||
where
|
||||
E: serde::de::Error,
|
||||
|
@ -48,7 +43,7 @@ where
|
|||
),
|
||||
&name,
|
||||
)
|
||||
}) // TODO try this error
|
||||
})
|
||||
}
|
||||
|
||||
fn visit_seq<S>(self, visitor: S) -> Result<Self::Value, S::Error>
|
||||
|
@ -59,10 +54,15 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
deserializer.deserialize_any(ResolveVisitor {
|
||||
resolver: resolver,
|
||||
_type: PhantomData,
|
||||
})
|
||||
let type_name = std::any::type_name::<Out>();
|
||||
if type_name == TYPE_STR || type_name == TYPE_STRING {
|
||||
deserializer.deserialize_any(ResolveVisitor {
|
||||
resolver: resolver,
|
||||
_type: PhantomData,
|
||||
})
|
||||
} else {
|
||||
Out::deserialize(deserializer)
|
||||
}
|
||||
}
|
||||
|
||||
// Allows deserialization of a single item into a vector of that item
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#![feature(const_type_name)]
|
||||
#![feature(let_chains)]
|
||||
mod astreams;
|
||||
mod database;
|
||||
|
|
Loading…
Reference in New Issue