1use crate::{builder::Builder, traits::*, Offset, UnionVectorOffset};
2
3impl<T, P> WriteAsOffset<[P]> for alloc::vec::Vec<T>
4where
5 [T]: WriteAsOffset<[P]>,
6{
7 #[inline]
8 fn prepare(&self, builder: &mut Builder) -> Offset<[P]> {
9 WriteAsOffset::prepare(self.as_slice(), builder)
10 }
11}
12
13impl<T, P> WriteAs<Offset<[P]>> for alloc::vec::Vec<T>
14where
15 [T]: WriteAsOffset<[P]>,
16{
17 type Prepared = Offset<[P]>;
18
19 #[inline]
20 fn prepare(&self, builder: &mut Builder) -> Offset<[P]> {
21 WriteAsOffset::prepare(self.as_slice(), builder)
22 }
23}
24
25impl<T, P> WriteAsDefault<Offset<[P]>, ()> for alloc::vec::Vec<T>
26where
27 [T]: WriteAsOffset<[P]>,
28{
29 type Prepared = Offset<[P]>;
30
31 #[inline]
32 fn prepare(&self, builder: &mut Builder, _default: &()) -> Option<Offset<[P]>> {
33 if self.is_empty() {
34 None
35 } else {
36 Some(WriteAsOffset::prepare(self.as_slice(), builder))
37 }
38 }
39}
40
41impl<T, P> WriteAsOptional<Offset<[P]>> for alloc::vec::Vec<T>
42where
43 [T]: WriteAsOffset<[P]>,
44{
45 type Prepared = Offset<[P]>;
46
47 #[inline]
48 fn prepare(&self, builder: &mut Builder) -> Option<Offset<[P]>> {
49 Some(WriteAsOffset::prepare(self.as_slice(), builder))
50 }
51}
52
53impl<T, P> WriteAsUnionVector<P> for alloc::vec::Vec<T>
54where
55 T: WriteAsUnion<P>,
56{
57 fn prepare(&self, builder: &mut Builder) -> UnionVectorOffset<P> {
58 WriteAsUnionVector::prepare(self.as_slice(), builder)
59 }
60}
61
62impl<T, P> WriteAsDefaultUnionVector<P> for alloc::vec::Vec<T>
63where
64 T: WriteAsUnion<P>,
65{
66 fn prepare(&self, builder: &mut Builder) -> Option<UnionVectorOffset<P>> {
67 if self.is_empty() {
68 None
69 } else {
70 Some(WriteAsUnionVector::prepare(self.as_slice(), builder))
71 }
72 }
73}
74
75impl<T, P> WriteAsOptionalUnionVector<P> for alloc::vec::Vec<T>
76where
77 T: WriteAsUnion<P>,
78{
79 #[inline]
80 fn prepare(&self, builder: &mut Builder) -> Option<UnionVectorOffset<P>> {
81 Some(WriteAsUnionVector::prepare(self.as_slice(), builder))
82 }
83}