Add stride accessor for Vec
Will be required for implementing an iterator.
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 15351f0..7503f3a 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -541,11 +541,13 @@
let link_drop = format!("{}drop", link_prefix);
let link_len = format!("{}len", link_prefix);
let link_data = format!("{}data", link_prefix);
+ let link_stride = format!("{}stride", link_prefix);
let local_prefix = format_ident!("{}__vec_", ident);
let local_drop = format_ident!("{}drop", local_prefix);
let local_len = format_ident!("{}len", local_prefix);
let local_data = format_ident!("{}data", local_prefix);
+ let local_stride = format_ident!("{}stride", local_prefix);
let span = ty.span();
quote_spanned! {span=>
@@ -564,6 +566,11 @@
unsafe extern "C" fn #local_data(this: *const ::cxx::private::RustVec<#inner>) -> *const #inner {
(*this).as_ptr()
}
+ #[doc(hidden)]
+ #[export_name = #link_stride]
+ unsafe extern "C" fn #local_stride() -> usize {
+ ::std::mem::size_of::<#inner>()
+ }
}
}