planus/impls/
box_.rs

1use crate::{builder::Builder, traits::*, Offset, UnionOffset};
2use alloc::boxed::Box;
3
4impl<P, T: ?Sized + WriteAsOffset<P>> WriteAsOffset<P> for Box<T> {
5    #[inline]
6    fn prepare(&self, builder: &mut Builder) -> Offset<P> {
7        T::prepare(self, builder)
8    }
9}
10
11impl<P: Primitive, T: ?Sized + WriteAs<P>> WriteAs<P> for Box<T> {
12    type Prepared = T::Prepared;
13    #[inline]
14    fn prepare(&self, builder: &mut Builder) -> T::Prepared {
15        T::prepare(self, builder)
16    }
17}
18
19impl<P: Primitive, D: ?Sized, T: ?Sized + WriteAsDefault<P, D>> WriteAsDefault<P, D> for Box<T> {
20    type Prepared = T::Prepared;
21    #[inline]
22    fn prepare(&self, builder: &mut Builder, default: &D) -> Option<T::Prepared> {
23        T::prepare(self, builder, default)
24    }
25}
26
27impl<P: Primitive, T: ?Sized + WriteAsOptional<P>> WriteAsOptional<P> for Box<T> {
28    type Prepared = T::Prepared;
29    #[inline]
30    fn prepare(&self, builder: &mut Builder) -> Option<T::Prepared> {
31        T::prepare(self, builder)
32    }
33}
34
35impl<T1: ?Sized, T2: ?Sized + WriteAsUnion<T1>> WriteAsUnion<T1> for Box<T2> {
36    #[inline]
37    fn prepare(&self, builder: &mut Builder) -> UnionOffset<T1> {
38        T2::prepare(self, builder)
39    }
40}
41
42impl<T1: ?Sized, T2: ?Sized + WriteAsOptionalUnion<T1>> WriteAsOptionalUnion<T1> for Box<T2> {
43    #[inline]
44    fn prepare(&self, builder: &mut Builder) -> Option<UnionOffset<T1>> {
45        T2::prepare(self, builder)
46    }
47}