simd_json_derive/impls/
deref.rs

1use 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
16// Taken from https://docs.serde.rs/src/serde/ser/impls.rs.html#378
17macro_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);