interact/deser/
derefs.rs

1use crate::deser::{Deser, Result, Tracker};
2use std::rc::Rc;
3use std::sync::Arc;
4
5impl<'a, T: 'a> Deser for &'a T where T: Deser {}
6
7impl<'a, T: 'a> Deser for &'a mut T where T: Deser {}
8
9impl<T> Deser for Box<T>
10where
11    T: Deser,
12{
13    fn deser<'a, 'b>(tracker: &mut Tracker<'a, 'b>) -> Result<Self> {
14        Ok(Box::new(T::deser(tracker)?))
15    }
16}
17
18impl<T> Deser for Rc<T>
19where
20    T: Deser,
21{
22    fn deser<'a, 'b>(tracker: &mut Tracker<'a, 'b>) -> Result<Self> {
23        Ok(Rc::new(T::deser(tracker)?))
24    }
25}
26
27impl<T> Deser for Arc<T>
28where
29    T: Deser,
30{
31    fn deser<'a, 'b>(tracker: &mut Tracker<'a, 'b>) -> Result<Self> {
32        Ok(Arc::new(T::deser(tracker)?))
33    }
34}