use cxx::{type_id, ExternType}; #[repr(transparent)] pub struct QuotedRaw(usize); unsafe impl ExternType for QuotedRaw { type Id = type_id!("org::r#box::implementation::QuotedRaw"); type Kind = cxx::kind::Trivial; } #[repr(transparent)] pub struct QuotedKeyword(usize); unsafe impl ExternType for QuotedKeyword { type Id = type_id!("org::box::implementation::QuotedKeyword"); type Kind = cxx::kind::Trivial; } #[repr(transparent)] pub struct UnquotedRaw(usize); unsafe impl ExternType for UnquotedRaw { type Id = type_id!(org::r#box::implementation::UnquotedRaw); type Kind = cxx::kind::Trivial; } #[repr(transparent)] pub struct UnquotedKeyword(usize); unsafe impl ExternType for UnquotedKeyword { type Id = type_id!(org::box::implementation::UnquotedKeyword); type Kind = cxx::kind::Trivial; } #[cxx::bridge] pub mod ffi { extern "C++" { #[namespace = "org::r#box::implementation"] type QuotedRaw = crate::QuotedRaw; #[namespace = "org::box::implementation"] type QuotedKeyword = crate::QuotedKeyword; #[namespace = org::r#box::implementation] type UnquotedRaw = crate::UnquotedRaw; // Not allowed by rustc (independent of cxx): // #[namespace = org::box::implementation] // type UnquotedKeyword = crate::UnquotedKeyword; } } fn main() {}