|
@@ -3,6 +3,18 @@ pub struct JsonWrapper<T: serde::Serialize + serde::de::DeserializeOwned + 'stat
|
|
|
wrap: T
|
|
|
}
|
|
|
|
|
|
+impl<T: serde::Serialize + serde::de::DeserializeOwned + 'static> serde::Serialize for JsonWrapper<T> {
|
|
|
+ fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
|
|
|
+ self.wrap.serialize(serializer)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<'de, T: serde::Serialize + serde::de::DeserializeOwned + 'static> serde::Deserialize<'de> for JsonWrapper<T> {
|
|
|
+ fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
|
|
|
+ Ok(Self::wrap(T::deserialize(deserializer)?))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
impl<T: serde::Serialize + serde::de::DeserializeOwned + 'static> JsonWrapper<T> {
|
|
|
pub fn wrap(wrap: T) -> Self {
|
|
|
Self { wrap }
|