planus/impls/
box_.rs

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