1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use crate::{ser::Casserole, store::Store}; use std::ops::Deref; impl<S, T> Casserole<S> for Box<T> where S: Store, T: Casserole<S>, { type Target = Box<<T as Casserole<S>>::Target>; fn casserole(&self, store: &mut S) -> Result<Self::Target, S::Error> { Ok(Box::new(self.deref().casserole(store)?)) } fn decasserole(target: &Self::Target, store: &mut S) -> Result<Self, S::Error> { Ok(Box::new(<T as Casserole<S>>::decasserole( target.deref(), store, )?)) } }