Unsafe CxxVector::get_unchecked
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 657bcd2..1b3aab3 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -656,14 +656,12 @@
 
     quote! {
         unsafe impl ::cxx::private::VectorElement<#inner> for #inner {
-            fn __get_unchecked(v: &::cxx::CxxVector<#inner>, pos: usize) -> &#inner {
+            unsafe fn __get_unchecked(v: &::cxx::CxxVector<#inner>, pos: usize) -> &#inner {
                 extern "C" {
                     #[link_name = #link_get_unchecked]
                     fn __get_unchecked(_: &::cxx::CxxVector<#inner>, _: usize) -> &#inner;
                 }
-                unsafe {
-                    __get_unchecked(v, pos)
-                }
+                __get_unchecked(v, pos)
             }
             fn __vector_length(v: &::cxx::CxxVector<#inner>) -> usize {
                 unsafe {
@@ -699,14 +697,12 @@
 
     quote! {
         unsafe impl VectorElement<#inner> for #inner {
-            fn __get_unchecked(v: &CxxVector<#inner>, pos: usize) -> &#inner {
+            unsafe fn __get_unchecked(v: &CxxVector<#inner>, pos: usize) -> &#inner {
                 extern "C" {
                     #[link_name = #link_get_unchecked]
                     fn __get_unchecked(_: &CxxVector<#inner>, _: usize) -> &#inner;
                 }
-                unsafe {
-                    __get_unchecked(v, pos)
-                }
+                __get_unchecked(v, pos)
             }
             fn __vector_length(v: &CxxVector<#inner>) -> usize {
                 unsafe {
diff --git a/src/cxx_vector.rs b/src/cxx_vector.rs
index c0d2f6b..7b985d8 100644
--- a/src/cxx_vector.rs
+++ b/src/cxx_vector.rs
@@ -19,7 +19,7 @@
         T::__vector_length(self)
     }
 
-    pub fn get_unchecked(&self, pos: usize) -> &T {
+    pub unsafe fn get_unchecked(&self, pos: usize) -> &T {
         T::__get_unchecked(self, pos)
     }
 
@@ -30,7 +30,7 @@
 
     pub fn get(&self, pos: usize) -> Option<&T> {
         if pos < self.size() {
-            Some(self.get_unchecked(pos))
+            Some(unsafe { T::__get_unchecked(self, pos) })
         } else {
             None
         }
@@ -68,7 +68,7 @@
 // codebase.
 #[doc(hidden)]
 pub unsafe trait VectorElement<T> {
-    fn __get_unchecked(v: &CxxVector<T>, pos: usize) -> &T;
+    unsafe fn __get_unchecked(v: &CxxVector<T>, pos: usize) -> &T;
     fn __vector_length(v: &CxxVector<T>) -> usize;
     fn __push_back(v: &CxxVector<T>, item: &T);
 }