diff --git a/macro/src/expand.rs b/macro/src/expand.rs index c5063a215..9e4bd6bee 100644 --- a/macro/src/expand.rs +++ b/macro/src/expand.rs @@ -960,6 +960,8 @@ fn expand_rust_box(ident: &RustName, types: &Types) -> TokenStream { let span = ident.span(); quote_spanned! {span=> + #[doc(hidden)] + unsafe impl ::cxx::private::ImplBox for #ident {} #[doc(hidden)] #[export_name = #link_uninit] unsafe extern "C" fn #local_uninit( @@ -999,6 +1001,8 @@ fn expand_rust_vec(elem: &RustName, types: &Types) -> TokenStream { let span = elem.span(); quote_spanned! {span=> + #[doc(hidden)] + unsafe impl ::cxx::private::ImplVec for #elem {} #[doc(hidden)] #[export_name = #link_new] unsafe extern "C" fn #local_new(this: *mut ::cxx::private::RustVec<#elem>) { diff --git a/src/lib.rs b/src/lib.rs index 1f24ca2e8..1e3b21227 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -448,7 +448,7 @@ pub mod private { pub use crate::rust_slice::RustSlice; pub use crate::rust_str::RustStr; pub use crate::rust_string::RustString; - pub use crate::rust_type::RustType; + pub use crate::rust_type::{ImplBox, ImplVec, RustType}; pub use crate::rust_vec::RustVec; pub use crate::shared_ptr::SharedPtrTarget; pub use crate::unique_ptr::UniquePtrTarget; diff --git a/src/rust_type.rs b/src/rust_type.rs index 2f4f089b0..7bcf440d0 100644 --- a/src/rust_type.rs +++ b/src/rust_type.rs @@ -1 +1,3 @@ pub unsafe trait RustType {} +pub unsafe trait ImplBox {} +pub unsafe trait ImplVec {}