Browse Source

Add missing serialize/deserialize implementations to JsonWrapper.

Kestrel 2 years ago
parent
commit
31ed954ac7
2 changed files with 13 additions and 1 deletions
  1. 1 1
      microrm/Cargo.toml
  2. 12 0
      microrm/src/model/json.rs

+ 1 - 1
microrm/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "microrm"
-version = "0.3.6"
+version = "0.3.7"
 edition = "2021"
 license = "BSD-4-Clause"
 authors = ["Kestrel <kestrel@flying-kestrel.ca>"]

+ 12 - 0
microrm/src/model/json.rs

@@ -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 }