planus/impls/
vec.rs

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}