Clarify that VectorElement is not meant to be implemented
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 477495a..657bcd2 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -655,7 +655,7 @@
let link_push_back = format!("{}push_back", prefix);
quote! {
- impl ::cxx::private::VectorElement<#inner> for #inner {
+ unsafe impl ::cxx::private::VectorElement<#inner> for #inner {
fn __get_unchecked(v: &::cxx::CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
@@ -698,7 +698,7 @@
let link_push_back = format!("{}push_back", prefix);
quote! {
- impl VectorElement<#inner> for #inner {
+ unsafe impl VectorElement<#inner> for #inner {
fn __get_unchecked(v: &CxxVector<#inner>, pos: usize) -> &#inner {
extern "C" {
#[link_name = #link_get_unchecked]
diff --git a/src/cxx_vector.rs b/src/cxx_vector.rs
index 7db8a45..c3f4fe7 100644
--- a/src/cxx_vector.rs
+++ b/src/cxx_vector.rs
@@ -64,8 +64,10 @@
}
}
+// Methods are private; not intended to be implemented outside of cxxbridge
+// codebase.
#[doc(hidden)]
-pub trait VectorElement<T> {
+pub unsafe trait VectorElement<T> {
fn __get_unchecked(v: &CxxVector<T>, pos: usize) -> &T
where
Self: Sized;