1use crate::{builder::Builder, traits::*, Offset};
2use alloc::vec::Vec;
3
4impl<T, P> WriteAsOffset<[P]> for Vec<T>
5where
6 P: Primitive,
7 T: VectorWrite<P>,
8{
9 #[inline]
10 fn prepare(&self, builder: &mut Builder) -> Offset<[P]> {
11 WriteAsOffset::prepare(self.as_slice(), builder)
12 }
13}
14
15impl<T, P> WriteAs<Offset<[P]>> for Vec<T>
16where
17 P: Primitive,
18 T: VectorWrite<P>,
19{
20 type Prepared = Offset<[P]>;
21
22 #[inline]
23 fn prepare(&self, builder: &mut Builder) -> Offset<[P]> {
24 WriteAsOffset::prepare(self.as_slice(), builder)
25 }
26}
27
28impl<T, P> WriteAsDefault<Offset<[P]>, ()> for Vec<T>
29where
30 P: Primitive,
31 T: VectorWrite<P>,
32{
33 type Prepared = Offset<[P]>;
34
35 #[inline]
36 fn prepare(&self, builder: &mut Builder, _default: &()) -> Option<Offset<[P]>> {
37 if self.is_empty() {
38 None
39 } else {
40 Some(WriteAsOffset::prepare(self.as_slice(), builder))
41 }
42 }
43}
44
45impl<T, P> WriteAsOptional<Offset<[P]>> for Vec<T>
46where
47 P: Primitive,
48 T: VectorWrite<P>,
49{
50 type Prepared = Offset<[P]>;
51
52 #[inline]
53 fn prepare(&self, builder: &mut Builder) -> Option<Offset<[P]>> {
54 Some(WriteAsOffset::prepare(self.as_slice(), builder))
55 }
56}