@@ -195,3 +195,29 @@ where
195195 cached.into()
196196 }
197197}
198+
199+#[cfg(feature = "serde")]
200+impl<R> serde::Serialize for Cached<R>
201+where
202+ R: Default + serde::Serialize,
203+{
204+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
205+ where
206+ S: serde::Serializer,
207+ {
208+ self.inner.serialize(serializer)
209+ }
210+}
211+
212+#[cfg(feature = "serde")]
213+impl<'de, R> serde::Deserialize<'de> for Cached<R>
214+where
215+ R: Default + serde::Deserialize<'de>,
216+{
217+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
218+ where
219+ D: serde::Deserializer<'de>,
220+ {
221+ R::deserialize(deserializer).map(Cached::new)
222+ }
223+}