simd_json_derive/impls/
deref.rs1use crate::{de, Deserialize, Serialize, Tape};
2
3impl<'input, T> Deserialize<'input> for Box<T>
4where
5 T: Deserialize<'input>,
6{
7 #[inline]
8 fn from_tape(tape: &mut Tape<'input>) -> de::Result<Self>
9 where
10 Self: std::marker::Sized + 'input,
11 {
12 Ok(Box::new(T::from_tape(tape)?))
13 }
14}
15
16macro_rules! deref_impl {
18 (
19 $(#[doc = $doc:tt])*
20 <$($desc:tt)+
21 ) => {
22 $(#[doc = $doc])*
23 impl <$($desc)+ {
24 #[inline]
25 fn json_write<W>(&self, writer: &mut W) -> std::io::Result<()>
26 where
27 W: std::io::Write,
28 {
29 (**self).json_write(writer)
30 }
31 }
32 };
33}
34
35deref_impl!(<'a, T> Serialize for &'a T where T: ?Sized + Serialize);
36deref_impl!(<'a, T> Serialize for &'a mut T where T: ?Sized + Serialize);
37deref_impl!(<T: ?Sized> Serialize for Box<T> where T: Serialize);
38deref_impl!(<'a, T: ?Sized> Serialize for std::borrow::Cow<'a, T> where T: Serialize + ToOwned);