blob: 2c8441bb7148204adcd882e87afdb8312bc926a4 [file] [log] [blame]
Myron Ahneba35cf2020-02-05 19:41:51 +07001use crate::vector::VectorTarget;
2
3#[repr(C)]
4pub struct RustVec<T: VectorTarget<T>> {
5 repr: Vec<T>,
6}
7
8impl<T: VectorTarget<T>> RustVec<T> {
9 pub fn from(v: Vec<T>) -> Self {
10 RustVec { repr: v }
11 }
12
13 pub fn from_ref(v: &Vec<T>) -> &Self {
14 unsafe { std::mem::transmute::<&Vec<T>, &RustVec<T>>(v) }
15 }
16
17 pub fn into_vec(self) -> Vec<T> {
18 self.repr
19 }
20
21 pub fn as_vec(&self) -> &Vec<T> {
22 &self.repr
23 }
24
25 pub fn as_mut_vec(&mut self) -> &mut Vec<T> {
26 &mut self.repr
27 }
28
29 pub fn len(&self) -> usize {
30 self.repr.len()
31 }
Myron Ahneba35cf2020-02-05 19:41:51 +070032}