C++ std::vector<T> and Rust std::vec::Vec<T> support

Add basic std::vector and std::vec::Vec support across FFI boundary.
diff --git a/src/rust_vec.rs b/src/rust_vec.rs
new file mode 100644
index 0000000..a28570d
--- /dev/null
+++ b/src/rust_vec.rs
@@ -0,0 +1,39 @@
+use crate::vector::RealVector;
+use crate::vector::VectorTarget;
+
+#[repr(C)]
+pub struct RustVec<T: VectorTarget<T>> {
+    repr: Vec<T>,
+}
+
+impl<T: VectorTarget<T>> RustVec<T> {
+    pub fn from(v: Vec<T>) -> Self {
+        RustVec { repr: v }
+    }
+
+    pub fn from_ref(v: &Vec<T>) -> &Self {
+        unsafe { std::mem::transmute::<&Vec<T>, &RustVec<T>>(v) }
+    }
+
+    pub fn into_vec(self) -> Vec<T> {
+        self.repr
+    }
+
+    pub fn as_vec(&self) -> &Vec<T> {
+        &self.repr
+    }
+
+    pub fn as_mut_vec(&mut self) -> &mut Vec<T> {
+        &mut self.repr
+    }
+
+    pub fn len(&self) -> usize {
+        self.repr.len()
+    }
+
+    pub fn into_vector(&self, vec: &mut RealVector<T>) {
+        for item in &self.repr {
+            vec.push_back(item);
+        }
+    }
+}