Qualify `detail` and `rust_std` where needed

the `detail` module is now top level and as such we need the `crate` qualifier when calling thunks from impls. For `rust_std` we used to have `use super::*` in each namespace, but that doesn't cut it for nested namespaces, as for those we'd need a `pub use super::*`. Instead I went with the `crate` qualifier with the hope that we'll find time at some point to fix b/227790881

PiperOrigin-RevId: 448207422
diff --git a/rs_bindings_from_cc/src_code_gen.rs b/rs_bindings_from_cc/src_code_gen.rs
index 3eb09de..a982c39 100644
--- a/rs_bindings_from_cc/src_code_gen.rs
+++ b/rs_bindings_from_cc/src_code_gen.rs
@@ -647,9 +647,9 @@
                 // TODO(b/226447239): check for copy here and instead use copies in that case?
                 quote! {
                     let #thunk_vars = args;
-                    ctor::FnCtor::new(move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| {
+                    ctor::FnCtor::new(move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| {
                         unsafe {
-                            detail::#thunk_ident(rust_std::pin::Pin::into_inner_unchecked(dest) #( , #thunk_args )*);
+                            crate::detail::#thunk_ident(crate::rust_std::pin::Pin::into_inner_unchecked(dest) #( , #thunk_args )*);
                         }
                     })
                 }
@@ -664,15 +664,15 @@
                 // reference fields). TODO(b/213243309): Double-check if
                 // zero-initialization is desirable here.
                 quote! {
-                    let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                    let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                     unsafe {
-                        detail::#thunk_ident( &mut tmp #( , #thunk_args )* );
+                        crate::detail::#thunk_ident( &mut tmp #( , #thunk_args )* );
                         tmp.assume_init()
                     }
                 }
             }
             _ => {
-                let mut body = quote! { detail::#thunk_ident( #( #thunk_args ),* ) };
+                let mut body = quote! { crate::detail::#thunk_ident( #( #thunk_args ),* ) };
                 // Only need to wrap everything in an `unsafe { ... }` block if
                 // the *whole* api function is safe.
                 if !impl_kind.is_unsafe() {
@@ -979,7 +979,7 @@
                     record.size * 8
                 };
                 let width = Literal::usize_unsuffixed((next_offset - f.offset) / 8);
-                return Ok(quote! {[rust_std::mem::MaybeUninit<u8>; #width]});
+                return Ok(quote! {[crate::rust_std::mem::MaybeUninit<u8>; #width]});
             }
             let mut formatted = format_rs_type(&f.type_.rs_type, ir).with_context(|| {
                 format!("Failed to format type for field {:?} on record {:?}", f, record)
@@ -990,7 +990,7 @@
                     // if we can ask Rust to preserve field destruction order if the
                     // destructor is the SpecialMemberDefinition::NontrivialMembers
                     // case.
-                    formatted = quote! { rust_std::mem::ManuallyDrop<#formatted> }
+                    formatted = quote! { crate::rust_std::mem::ManuallyDrop<#formatted> }
                 } else {
                     field_copy_trait_assertions.push(quote! {
                         const _: () = { static_assertions::assert_impl_all!(#formatted: Copy); };
@@ -1085,7 +1085,7 @@
     let head_padding = if head_padding > 0 || record.is_derived_class {
         let n = proc_macro2::Literal::usize_unsuffixed(head_padding);
         quote! {
-            __non_field_data: [rust_std::mem::MaybeUninit<u8>; #n],
+            __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; #n],
         }
     } else {
         quote! {}
@@ -1318,8 +1318,6 @@
 
     let namespace_tokens = quote! {
         pub mod #name {
-            use super::*; __NEWLINE__ __NEWLINE__
-
             #( #items __NEWLINE__ __NEWLINE__ )*
         }
     };
@@ -1784,7 +1782,7 @@
         match self {
             RsTypeKind::Reference { referent, lifetime, mutability: Mutability::Mut } => {
                 let lifetime = format_lifetime_name(&lifetime.name);
-                Ok(quote! { & #lifetime mut rust_std::mem::MaybeUninit< #referent > })
+                Ok(quote! { & #lifetime mut crate::rust_std::mem::MaybeUninit< #referent > })
             }
             _ => bail!("Expected reference to format as MaybeUninit, got: {:?}", self),
         }
@@ -1833,7 +1831,7 @@
                 {
                     // TODO(b/200067242): Add a `use rust_std::pin::Pin` to the crate, and use
                     // `Pin`.
-                    Ok(quote! {self: rust_std::pin::Pin< & #lifetime #mut_ Self>})
+                    Ok(quote! {self: crate::rust_std::pin::Pin< & #lifetime #mut_ Self>})
                 } else {
                     Ok(quote! { & #lifetime #mut_ self })
                 }
@@ -1939,7 +1937,7 @@
                     // `Pin`. This either requires deciding how to qualify pin at
                     // RsTypeKind-creation time, or returning an RsSnippet from here (and not
                     // implementing ToTokens, but instead some other interface.)
-                    quote! {rust_std::pin::Pin< #reference >}
+                    quote! {crate::rust_std::pin::Pin< #reference >}
                 } else {
                     reference
                 }
@@ -2254,7 +2252,7 @@
                 pub fn #cast_fn_name (from: *const #derived_name) -> *const #base_name;
             });
             body = quote! {
-                detail::#cast_fn_name(derived)
+                crate::detail::#cast_fn_name(derived)
             };
         }
         impls.push(quote! {
@@ -2479,7 +2477,7 @@
             quote! {
                 #[inline(always)]
                 pub fn Add(a: i32, b: i32) -> i32 {
-                    unsafe { detail::__rust_thunk___Z3Addii(a, b) }
+                    unsafe { crate::detail::__rust_thunk___Z3Addii(a, b) }
                 }
             }
         );
@@ -2511,7 +2509,7 @@
             quote! {
                 #[inline(always)]
                 pub fn Add(a: i32, b: i32) -> i32 {
-                    unsafe { detail::__rust_thunk___Z3Addii(a, b) }
+                    unsafe { crate::detail::__rust_thunk___Z3Addii(a, b) }
                 }
             }
         );
@@ -2553,7 +2551,7 @@
                 #[inline(always)]
                 pub fn DoSomething(param: dependency::ParamStruct)
                     -> dependency::ReturnStruct {
-                    unsafe { detail::__rust_thunk___Z11DoSomething11ParamStruct(param) }
+                    unsafe { crate::detail::__rust_thunk___Z11DoSomething11ParamStruct(param) }
                 }
             }
         );
@@ -2813,7 +2811,7 @@
             quote! {
                 #[inline(always)]
                 pub unsafe fn Deref(p: *const *mut i32) -> *mut i32 {
-                    detail::__rust_thunk___Z5DerefPKPi(p)
+                    crate::detail::__rust_thunk___Z5DerefPKPi(p)
                 }
             }
         );
@@ -2858,7 +2856,7 @@
             quote! {
                 #[inline(always)]
                 pub unsafe fn f(str: *const i8) {
-                    detail::__rust_thunk___Z1fPKc(str)
+                    crate::detail::__rust_thunk___Z1fPKc(str)
                 }
             }
         );
@@ -2889,7 +2887,7 @@
             quote! {
                 #[inline(always)]
                 pub fn get_ptr_to_func() -> Option<extern "C" fn (f32, f64) -> i32> {
-                    unsafe { detail::__rust_thunk___Z15get_ptr_to_funcv() }
+                    unsafe { crate::detail::__rust_thunk___Z15get_ptr_to_funcv() }
                 }
             }
         );
@@ -2929,7 +2927,7 @@
             quote! {
                 #[inline(always)]
                 pub fn get_ref_to_func() -> extern "C" fn (f32, f64) -> i32 {
-                    unsafe { detail::__rust_thunk___Z15get_ref_to_funcv() }
+                    unsafe { crate::detail::__rust_thunk___Z15get_ref_to_funcv() }
                 }
             }
         );
@@ -2963,7 +2961,7 @@
             quote! {
                 #[inline(always)]
                 pub fn get_ptr_to_func() -> Option<extern "C" fn (*const i32) -> *const i32> {
-                    unsafe { detail::__rust_thunk___Z15get_ptr_to_funcv() }
+                    unsafe { crate::detail::__rust_thunk___Z15get_ptr_to_funcv() }
                 }
             }
         );
@@ -3040,7 +3038,7 @@
             quote! {
                 #[inline(always)]
                 pub fn get_ptr_to_func() -> Option<extern "vectorcall" fn (f32, f64) -> i32> {
-                    unsafe { detail::__rust_thunk___Z15get_ptr_to_funcv() }
+                    unsafe { crate::detail::__rust_thunk___Z15get_ptr_to_funcv() }
                 }
             }
         );
@@ -3188,7 +3186,7 @@
             quote! {
                 #[repr(C, align(8))]
                 pub struct Derived {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 10],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 10],
                     pub z: i16,
                 }
             }
@@ -3213,7 +3211,7 @@
             quote! {
                 #[repr(C, align(8))]
                 pub struct Derived {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 10],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 10],
                     pub z: i16,
                 }
             }
@@ -3238,7 +3236,7 @@
             quote! {
                 #[repr(C, align(8))]
                 pub struct Derived {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 10],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 10],
                     pub z: i16,
                 }
             }
@@ -3262,7 +3260,7 @@
             quote! {
                 #[repr(C, align(8))]
                 pub struct Derived {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 16],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 16],
                 }
             }
         );
@@ -3283,7 +3281,7 @@
             quote! {
                 #[repr(C)]
                 pub struct Derived {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
                 }
             }
         );
@@ -3306,7 +3304,7 @@
             quote! {
                 #[repr(C, align(2))]
                 pub struct Derived {
-                    __non_field_data:  [rust_std::mem::MaybeUninit<u8>; 0],
+                    __non_field_data:  [crate::rust_std::mem::MaybeUninit<u8>; 0],
                     pub x: i16,
                 }
             }
@@ -3336,8 +3334,8 @@
                 #[derive(Clone, Copy)]
                 #[repr(C, align(8))]
                 pub struct Struct {
-                    field1: [rust_std::mem::MaybeUninit<u8>; 8],
-                    field2: [rust_std::mem::MaybeUninit<u8>; 2],
+                    field1: [crate::rust_std::mem::MaybeUninit<u8>; 8],
+                    field2: [crate::rust_std::mem::MaybeUninit<u8>; 2],
                     pub z: i16,
                 }
             }
@@ -3379,8 +3377,8 @@
                 #[derive(Clone, Copy)]
                 #[repr(C, align(8))]
                 pub struct Struct {
-                    field1: [rust_std::mem::MaybeUninit<u8>; 8],
-                    field2: [rust_std::mem::MaybeUninit<u8>; 8],
+                    field1: [crate::rust_std::mem::MaybeUninit<u8>; 8],
+                    field2: [crate::rust_std::mem::MaybeUninit<u8>; 8],
                 }
             }
         );
@@ -3404,7 +3402,7 @@
             quote! {
                 #[repr(C, align(4))]
                 pub struct Struct {
-                    field: [rust_std::mem::MaybeUninit<u8>; 0],
+                    field: [crate::rust_std::mem::MaybeUninit<u8>; 0],
                     pub x: i32,
                 }
             }
@@ -3428,7 +3426,7 @@
             quote! {
                 #[repr(C)]
                 pub struct Struct {
-                    field: [rust_std::mem::MaybeUninit<u8>; 1],
+                    field: [crate::rust_std::mem::MaybeUninit<u8>; 1],
                 }
             }
         );
@@ -3806,7 +3804,7 @@
                 #[derive(Clone, Copy)]
                 #[repr(C)]
                 pub struct EmptyStruct {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
                 }
             }
         );
@@ -3837,7 +3835,7 @@
                 #[derive(Clone, Copy)]
                 #[repr(C)]
                 pub union EmptyUnion {
-                    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+                    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
                 }
             }
         );
@@ -3873,7 +3871,7 @@
                 #[repr(C)]
                 pub union UnionWithNontrivialField {
                     pub trivial_field: i32,
-                    pub nontrivial_field: rust_std::mem::ManuallyDrop<crate::NontrivialStruct>,
+                    pub nontrivial_field: crate::rust_std::mem::ManuallyDrop<crate::NontrivialStruct>,
                 }
             }
         );
@@ -3917,9 +3915,9 @@
                 impl Default for UnionWithDefaultConstructors {
                     #[inline(always)]
                     fn default() -> Self {
-                        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
-                            detail::__rust_thunk___ZN28UnionWithDefaultConstructorsC1Ev(&mut tmp);
+                            crate::detail::__rust_thunk___ZN28UnionWithDefaultConstructorsC1Ev(&mut tmp);
                             tmp.assume_init()
                         }
                     }
@@ -3933,9 +3931,9 @@
                 impl<'b> From<ctor::RvalueReference<'b, crate::UnionWithDefaultConstructors>> for UnionWithDefaultConstructors {
                     #[inline(always)]
                     fn from(__param_0: ctor::RvalueReference<'b, crate::UnionWithDefaultConstructors>) -> Self {
-                        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
-                            detail::__rust_thunk___ZN28UnionWithDefaultConstructorsC1EOS_(&mut tmp, __param_0);
+                            crate::detail::__rust_thunk___ZN28UnionWithDefaultConstructorsC1EOS_(&mut tmp, __param_0);
                             tmp.assume_init()
                         }
                     }
@@ -3966,7 +3964,7 @@
             quote! {
                 unsafe impl oops::Inherits<crate::VirtualBase> for Derived {
                     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::VirtualBase {
-                        detail::__crubit_dynamic_upcast__Derived__to__VirtualBase(derived)
+                        crate::detail::__crubit_dynamic_upcast__Derived__to__VirtualBase(derived)
                     }
                 }
             }
@@ -4052,7 +4050,7 @@
                 #[inline(always)]
                 pub fn f_vectorcall_calling_convention(p1: f32, p2: f32) -> f32 {
                     unsafe {
-                        detail::__rust_thunk___Z31f_vectorcall_calling_conventionff(p1, p2)
+                        crate::detail::__rust_thunk___Z31f_vectorcall_calling_conventionff(p1, p2)
                     }
                 }
             }
@@ -4062,7 +4060,7 @@
             quote! {
                 #[inline(always)]
                 pub fn f_c_calling_convention(p1: f64, p2: f64) -> f64 {
-                    unsafe { detail::__rust_thunk___Z22f_c_calling_conventiondd(p1, p2) }
+                    unsafe { crate::detail::__rust_thunk___Z22f_c_calling_conventiondd(p1, p2) }
                 }
             }
         );
@@ -4149,7 +4147,7 @@
                 impl Drop for UserDefinedDestructor {
                     #[inline(always)]
                     fn drop(&mut self) {
-                        unsafe { detail::__rust_thunk___ZN21UserDefinedDestructorD1Ev(self) }
+                        unsafe { crate::detail::__rust_thunk___ZN21UserDefinedDestructorD1Ev(self) }
                     }
                 }
             }
@@ -4157,7 +4155,7 @@
         assert_rs_matches!(rs_api, quote! {pub x: i32,});
         assert_rs_matches!(
             rs_api,
-            quote! {pub nts: rust_std::mem::ManuallyDrop<crate::NontrivialStruct>,}
+            quote! {pub nts: crate::rust_std::mem::ManuallyDrop<crate::NontrivialStruct>,}
         );
         Ok(())
     }
@@ -4187,7 +4185,7 @@
                 impl Drop for NontrivialMembers {
                     #[inline(always)]
                     fn drop(&mut self) {
-                        unsafe { detail::__rust_thunk___ZN17NontrivialMembersD1Ev(self) }
+                        unsafe { crate::detail::__rust_thunk___ZN17NontrivialMembersD1Ev(self) }
                     }
                 }
             }
@@ -4196,7 +4194,7 @@
         assert_rs_matches!(rs_api, quote! {pub ts: crate::TrivialStruct,});
         assert_rs_matches!(
             rs_api,
-            quote! {pub udd: rust_std::mem::ManuallyDrop<crate::UserDefinedDestructor>,}
+            quote! {pub udd: crate::rust_std::mem::ManuallyDrop<crate::UserDefinedDestructor>,}
         );
         Ok(())
     }
@@ -4235,9 +4233,9 @@
                 impl Default for DefaultedConstructor {
                     #[inline(always)]
                     fn default() -> Self {
-                        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
-                            detail::__rust_thunk___ZN20DefaultedConstructorC1Ev(&mut tmp);
+                            crate::detail::__rust_thunk___ZN20DefaultedConstructorC1Ev(&mut tmp);
                             tmp.assume_init()
                         }
                     }
@@ -4352,9 +4350,9 @@
                 impl From<i32> for SomeStruct {
                     #[inline(always)]
                     fn from(i: i32) -> Self {
-                        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
-                            detail::__rust_thunk___ZN10SomeStructC1Ei(&mut tmp, i);
+                            crate::detail::__rust_thunk___ZN10SomeStructC1Ei(&mut tmp, i);
                             tmp.assume_init()
                         }
                     }
@@ -4383,9 +4381,9 @@
                 impl<'b> From<&'b crate::SomeOtherStruct> for StructUnderTest {
                     #[inline(always)]
                     fn from(other: &'b crate::SomeOtherStruct) -> Self {
-                        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+                        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
-                            detail::__rust_thunk___ZN15StructUnderTestC1ERK15SomeOtherStruct(
+                            crate::detail::__rust_thunk___ZN15StructUnderTestC1ERK15SomeOtherStruct(
                                 &mut tmp, other);
                             tmp.assume_init()
                         }
@@ -4414,7 +4412,7 @@
                 impl PartialEq<crate::SomeStruct> for SomeStruct {
                     #[inline(always)]
                     fn eq<'a, 'b>(&'a self, other: &'b crate::SomeStruct) -> bool {
-                        unsafe { detail::__rust_thunk___ZNK10SomeStructeqERKS_(self, other) }
+                        unsafe { crate::detail::__rust_thunk___ZNK10SomeStructeqERKS_(self, other) }
                     }
                 }
             }
@@ -4447,7 +4445,7 @@
                 impl PartialEq<crate::SomeStruct> for SomeStruct {
                     #[inline(always)]
                     fn eq<'a, 'b>(&'a self, rhs: &'b crate::SomeStruct) -> bool {
-                        unsafe { detail::__rust_thunk___ZeqRK10SomeStructS1_(self, rhs) }
+                        unsafe { crate::detail::__rust_thunk___ZeqRK10SomeStructS1_(self, rhs) }
                     }
                 }
             }
@@ -4950,7 +4948,7 @@
         assert_rs_matches!(
             rs_api,
             quote! {
-                fn Function<'a>(s: rust_std::pin::Pin<&'a mut crate::S>) { ... }
+                fn Function<'a>(s: crate::rust_std::pin::Pin<&'a mut crate::S>) { ... }
             }
         );
         Ok(())
@@ -4994,7 +4992,7 @@
         assert_rs_matches!(
             rs_api,
             quote! {
-                fn Function<'a>(self: rust_std::pin::Pin<&'a mut Self>) { ... }
+                fn Function<'a>(self: crate::rust_std::pin::Pin<&'a mut Self>) { ... }
             }
         );
         Ok(())
@@ -5036,9 +5034,9 @@
                     #[inline (always)]
                     fn ctor_new(args: ()) -> Self::CtorType {
                         let () = args;
-                        ctor::FnCtor::new(move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| {
+                        ctor::FnCtor::new(move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| {
                             unsafe {
-                                detail::__rust_thunk___ZN14HasConstructorC1Ev(rust_std::pin::Pin::into_inner_unchecked(dest));
+                                crate::detail::__rust_thunk___ZN14HasConstructorC1Ev(crate::rust_std::pin::Pin::into_inner_unchecked(dest));
                             }
                         })
                     }
@@ -5066,9 +5064,9 @@
                     #[inline (always)]
                     fn ctor_new(args: u8) -> Self::CtorType {
                         let input = args;
-                        ctor::FnCtor::new(move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| {
+                        ctor::FnCtor::new(move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| {
                             unsafe {
-                                detail::__rust_thunk___ZN14HasConstructorC1Eh(rust_std::pin::Pin::into_inner_unchecked(dest), input);
+                                crate::detail::__rust_thunk___ZN14HasConstructorC1Eh(crate::rust_std::pin::Pin::into_inner_unchecked(dest), input);
                             }
                         })
                     }
@@ -5096,9 +5094,9 @@
                     #[inline (always)]
                     fn ctor_new(args: (u8, i8)) -> Self::CtorType {
                         let (input1, input2) = args;
-                        ctor::FnCtor::new(move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| {
+                        ctor::FnCtor::new(move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| {
                             unsafe {
-                                detail::__rust_thunk___ZN14HasConstructorC1Eha(rust_std::pin::Pin::into_inner_unchecked(dest), input1, input2);
+                                crate::detail::__rust_thunk___ZN14HasConstructorC1Eha(crate::rust_std::pin::Pin::into_inner_unchecked(dest), input1, input2);
                             }
                         })
                     }
@@ -5164,24 +5162,6 @@
     }
 
     #[test]
-    fn test_namespace_uses_star_from_super() -> Result<()> {
-        let rs_api = generate_bindings_tokens(&ir_from_cc(
-            "namespace test_namespace_bindings { int func(); }",
-        )?)?
-        .rs_api;
-        assert_rs_matches!(
-            rs_api,
-            quote! {
-                pub mod test_namespace_bindings {
-                    use super::*;
-                    ...
-                }
-            }
-        );
-        Ok(())
-    }
-
-    #[test]
     fn test_detail_outside_of_namespace_module() -> Result<()> {
         let rs_api = generate_bindings_tokens(&ir_from_cc(
             r#"
diff --git a/rs_bindings_from_cc/test/golden/clang_attrs_rs_api.rs b/rs_bindings_from_cc/test/golden/clang_attrs_rs_api.rs
index 1de0604..dd6b4f3 100644
--- a/rs_bindings_from_cc/test/golden/clang_attrs_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/clang_attrs_rs_api.rs
@@ -18,7 +18,7 @@
 
 #[repr(C, align(64))]
 pub struct HasCustomAlignment {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 64],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 64],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("HasCustomAlignment"),
@@ -80,7 +80,7 @@
 
 #[repr(C, align(64))]
 pub struct InheritsFromBaseWithCustomAlignment {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 64],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 64],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("InheritsFromBaseWithCustomAlignment"),
@@ -117,7 +117,7 @@
 
 #[repr(C, align(64))]
 pub struct HasCustomAlignmentWithGnuAttr {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 64],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 64],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("HasCustomAlignmentWithGnuAttr"),
diff --git a/rs_bindings_from_cc/test/golden/comment_rs_api.rs b/rs_bindings_from_cc/test/golden/comment_rs_api.rs
index 9683b1e..0b089b2 100644
--- a/rs_bindings_from_cc/test/golden/comment_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/comment_rs_api.rs
@@ -36,9 +36,9 @@
 impl Default for Foo {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN3FooC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN3FooC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -47,9 +47,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::Foo>> for Foo {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::Foo>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN3FooC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN3FooC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -81,7 +81,7 @@
 /// foo
 #[inline(always)]
 pub fn foo() {
-    unsafe { detail::__rust_thunk___Z3foov() }
+    unsafe { crate::detail::__rust_thunk___Z3foov() }
 }
 
 /// Bar
@@ -95,9 +95,9 @@
 impl Default for Bar {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN3BarC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN3BarC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -106,9 +106,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::Bar>> for Bar {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::Bar>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN3BarC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN3BarC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -133,9 +133,9 @@
 impl Default for HasNoComments {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN13HasNoCommentsC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN13HasNoCommentsC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -144,9 +144,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::HasNoComments>> for HasNoComments {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::HasNoComments>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN13HasNoCommentsC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN13HasNoCommentsC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -169,25 +169,25 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN3FooC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Foo>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Foo>,
         );
         pub(crate) fn __rust_thunk___ZN3FooC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Foo>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Foo>,
             __param_0: ctor::RvalueReference<'b, crate::Foo>,
         );
         pub(crate) fn __rust_thunk___Z3foov();
         pub(crate) fn __rust_thunk___ZN3BarC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Bar>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Bar>,
         );
         pub(crate) fn __rust_thunk___ZN3BarC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Bar>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Bar>,
             __param_0: ctor::RvalueReference<'b, crate::Bar>,
         );
         pub(crate) fn __rust_thunk___ZN13HasNoCommentsC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::HasNoComments>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::HasNoComments>,
         );
         pub(crate) fn __rust_thunk___ZN13HasNoCommentsC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::HasNoComments>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::HasNoComments>,
             __param_0: ctor::RvalueReference<'b, crate::HasNoComments>,
         );
     }
diff --git a/rs_bindings_from_cc/test/golden/doc_comment_rs_api.rs b/rs_bindings_from_cc/test/golden/doc_comment_rs_api.rs
index 4c19eb5..cc47eec 100644
--- a/rs_bindings_from_cc/test/golden/doc_comment_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/doc_comment_rs_api.rs
@@ -33,9 +33,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::DocCommentSlashes>> for DocCommentSlashes {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::DocCommentSlashes>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN17DocCommentSlashesC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN17DocCommentSlashesC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -54,9 +54,9 @@
 impl Default for DocCommentSlashes {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN17DocCommentSlashesC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN17DocCommentSlashesC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -67,9 +67,9 @@
 impl From<i32> for DocCommentSlashes {
     #[inline(always)]
     fn from(__param_0: i32) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN17DocCommentSlashesC1Ei(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN17DocCommentSlashesC1Ei(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -79,7 +79,7 @@
     /// A non-static member function (`const` flavor).
     #[inline(always)]
     pub fn get_field_value<'a>(&'a self) -> i32 {
-        unsafe { detail::__rust_thunk___ZNK17DocCommentSlashes15get_field_valueEv(self) }
+        unsafe { crate::detail::__rust_thunk___ZNK17DocCommentSlashes15get_field_valueEv(self) }
     }
 }
 
@@ -87,7 +87,9 @@
     /// A non-static member function (non-`const` flavor).
     #[inline(always)]
     pub fn set_field_value<'a>(&'a mut self, new_value: i32) {
-        unsafe { detail::__rust_thunk___ZN17DocCommentSlashes15set_field_valueEi(self, new_value) }
+        unsafe {
+            crate::detail::__rust_thunk___ZN17DocCommentSlashes15set_field_valueEi(self, new_value)
+        }
     }
 }
 
@@ -95,7 +97,7 @@
     /// A static method.
     #[inline(always)]
     pub fn static_method() -> i32 {
-        unsafe { detail::__rust_thunk___ZN17DocCommentSlashes13static_methodEv() }
+        unsafe { crate::detail::__rust_thunk___ZN17DocCommentSlashes13static_methodEv() }
     }
 }
 
@@ -113,9 +115,9 @@
 impl Default for DocCommentBang {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN14DocCommentBangC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN14DocCommentBangC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -124,9 +126,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::DocCommentBang>> for DocCommentBang {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::DocCommentBang>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN14DocCommentBangC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN14DocCommentBangC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -157,9 +159,9 @@
 impl Default for MultilineCommentTwoStars {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN24MultilineCommentTwoStarsC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN24MultilineCommentTwoStarsC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -170,9 +172,9 @@
 {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::MultilineCommentTwoStars>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN24MultilineCommentTwoStarsC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN24MultilineCommentTwoStarsC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -200,9 +202,9 @@
 impl Default for LineComment {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN11LineCommentC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN11LineCommentC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -211,9 +213,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::LineComment>> for LineComment {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::LineComment>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN11LineCommentC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN11LineCommentC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -244,9 +246,9 @@
 impl Default for MultilineOneStar {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN16MultilineOneStarC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN16MultilineOneStarC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -255,9 +257,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::MultilineOneStar>> for MultilineOneStar {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::MultilineOneStar>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN16MultilineOneStarC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN16MultilineOneStarC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -274,7 +276,7 @@
 /// A function
 #[inline(always)]
 pub fn foo() -> i32 {
-    unsafe { detail::__rust_thunk___Z3foov() }
+    unsafe { crate::detail::__rust_thunk___Z3foov() }
 }
 
 /// A type alias
@@ -287,16 +289,16 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN17DocCommentSlashesC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
             __param_0: ctor::RvalueReference<'b, crate::DocCommentSlashes>,
         );
         #[link_name = "_ZN17DocCommentSlashesC1Ev"]
         pub(crate) fn __rust_thunk___ZN17DocCommentSlashesC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
         );
         #[link_name = "_ZN17DocCommentSlashesC1Ei"]
         pub(crate) fn __rust_thunk___ZN17DocCommentSlashesC1Ei<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::DocCommentSlashes>,
             __param_0: i32,
         );
         #[link_name = "_ZNK17DocCommentSlashes15get_field_valueEv"]
@@ -311,31 +313,31 @@
         #[link_name = "_ZN17DocCommentSlashes13static_methodEv"]
         pub(crate) fn __rust_thunk___ZN17DocCommentSlashes13static_methodEv() -> i32;
         pub(crate) fn __rust_thunk___ZN14DocCommentBangC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::DocCommentBang>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::DocCommentBang>,
         );
         pub(crate) fn __rust_thunk___ZN14DocCommentBangC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::DocCommentBang>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::DocCommentBang>,
             __param_0: ctor::RvalueReference<'b, crate::DocCommentBang>,
         );
         pub(crate) fn __rust_thunk___ZN24MultilineCommentTwoStarsC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::MultilineCommentTwoStars>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::MultilineCommentTwoStars>,
         );
         pub(crate) fn __rust_thunk___ZN24MultilineCommentTwoStarsC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::MultilineCommentTwoStars>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::MultilineCommentTwoStars>,
             __param_0: ctor::RvalueReference<'b, crate::MultilineCommentTwoStars>,
         );
         pub(crate) fn __rust_thunk___ZN11LineCommentC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::LineComment>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::LineComment>,
         );
         pub(crate) fn __rust_thunk___ZN11LineCommentC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::LineComment>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::LineComment>,
             __param_0: ctor::RvalueReference<'b, crate::LineComment>,
         );
         pub(crate) fn __rust_thunk___ZN16MultilineOneStarC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::MultilineOneStar>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::MultilineOneStar>,
         );
         pub(crate) fn __rust_thunk___ZN16MultilineOneStarC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::MultilineOneStar>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::MultilineOneStar>,
             __param_0: ctor::RvalueReference<'b, crate::MultilineOneStar>,
         );
         pub(crate) fn __rust_thunk___Z3foov() -> i32;
diff --git a/rs_bindings_from_cc/test/golden/escaping_keywords_rs_api.rs b/rs_bindings_from_cc/test/golden/escaping_keywords_rs_api.rs
index 5bcc5d4..7846092 100644
--- a/rs_bindings_from_cc/test/golden/escaping_keywords_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/escaping_keywords_rs_api.rs
@@ -26,9 +26,9 @@
 impl Default for r#type {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN4typeC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN4typeC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -37,9 +37,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::r#type>> for r#type {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::r#type>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN4typeC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN4typeC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -55,7 +55,7 @@
 
 #[inline(always)]
 pub fn r#impl(r#match: i32) {
-    unsafe { detail::__rust_thunk___Z4impli(r#match) }
+    unsafe { crate::detail::__rust_thunk___Z4impli(r#match) }
 }
 
 // rs_bindings_from_cc/test/golden/escaping_keywords.h;l=16
@@ -73,10 +73,10 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN4typeC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::r#type>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::r#type>,
         );
         pub(crate) fn __rust_thunk___ZN4typeC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::r#type>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::r#type>,
             __param_0: ctor::RvalueReference<'b, crate::r#type>,
         );
         #[link_name = "_Z4impli"]
diff --git a/rs_bindings_from_cc/test/golden/inheritance_rs_api.rs b/rs_bindings_from_cc/test/golden/inheritance_rs_api.rs
index ec69fb6..a88b287 100644
--- a/rs_bindings_from_cc/test/golden/inheritance_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/inheritance_rs_api.rs
@@ -21,7 +21,7 @@
 /// objects, even if the POD type is potentially-overlapping.
 #[repr(C)]
 pub struct Base0 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("Base0"), crate::Base0);
 
@@ -107,7 +107,7 @@
 #[derive(Clone, Copy)]
 #[repr(C, align(8))]
 pub struct Derived {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 12],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 12],
     pub derived_1: u8,
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("Derived"), crate::Derived);
@@ -150,7 +150,7 @@
 
 #[repr(C, align(8))]
 pub struct VirtualBase1 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 24],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 24],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("VirtualBase1"), crate::VirtualBase1);
 
@@ -178,13 +178,13 @@
 
 unsafe impl oops::Inherits<crate::Base1> for VirtualBase1 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::Base1 {
-        detail::__crubit_dynamic_upcast__VirtualBase1__to__Base1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualBase1__to__Base1(derived)
     }
 }
 
 #[repr(C, align(8))]
 pub struct VirtualBase2 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 24],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 24],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("VirtualBase2"), crate::VirtualBase2);
 
@@ -212,13 +212,13 @@
 
 unsafe impl oops::Inherits<crate::Base1> for VirtualBase2 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::Base1 {
-        detail::__crubit_dynamic_upcast__VirtualBase2__to__Base1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualBase2__to__Base1(derived)
     }
 }
 
 #[repr(C, align(8))]
 pub struct VirtualDerived {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 32],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 32],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("VirtualDerived"), crate::VirtualDerived);
 
@@ -246,17 +246,17 @@
 
 unsafe impl oops::Inherits<crate::VirtualBase1> for VirtualDerived {
     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::VirtualBase1 {
-        detail::__crubit_dynamic_upcast__VirtualDerived__to__VirtualBase1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived__to__VirtualBase1(derived)
     }
 }
 unsafe impl oops::Inherits<crate::Base1> for VirtualDerived {
     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::Base1 {
-        detail::__crubit_dynamic_upcast__VirtualDerived__to__Base1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived__to__Base1(derived)
     }
 }
 unsafe impl oops::Inherits<crate::VirtualBase2> for VirtualDerived {
     unsafe fn upcast_ptr(derived: *const Self) -> *const crate::VirtualBase2 {
-        detail::__crubit_dynamic_upcast__VirtualDerived__to__VirtualBase2(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived__to__VirtualBase2(derived)
     }
 }
 
diff --git a/rs_bindings_from_cc/test/golden/item_order_rs_api.rs b/rs_bindings_from_cc/test/golden/item_order_rs_api.rs
index 27e5b10..b589919 100644
--- a/rs_bindings_from_cc/test/golden/item_order_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/item_order_rs_api.rs
@@ -26,9 +26,9 @@
 impl Default for FirstStruct {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN11FirstStructC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN11FirstStructC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -37,9 +37,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::FirstStruct>> for FirstStruct {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::FirstStruct>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN11FirstStructC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN11FirstStructC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -55,7 +55,7 @@
 
 #[inline(always)]
 pub fn first_func() -> i32 {
-    unsafe { detail::__rust_thunk___Z10first_funcv() }
+    unsafe { crate::detail::__rust_thunk___Z10first_funcv() }
 }
 
 #[derive(Clone, Copy)]
@@ -68,9 +68,9 @@
 impl Default for SecondStruct {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN12SecondStructC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN12SecondStructC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -79,9 +79,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::SecondStruct>> for SecondStruct {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::SecondStruct>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN12SecondStructC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN12SecondStructC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -97,7 +97,7 @@
 
 #[inline(always)]
 pub fn second_func() -> i32 {
-    unsafe { detail::__rust_thunk___Z11second_funcv() }
+    unsafe { crate::detail::__rust_thunk___Z11second_funcv() }
 }
 
 // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_ITEM_ORDER_H_
@@ -107,18 +107,18 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN11FirstStructC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::FirstStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::FirstStruct>,
         );
         pub(crate) fn __rust_thunk___ZN11FirstStructC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::FirstStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::FirstStruct>,
             __param_0: ctor::RvalueReference<'b, crate::FirstStruct>,
         );
         pub(crate) fn __rust_thunk___Z10first_funcv() -> i32;
         pub(crate) fn __rust_thunk___ZN12SecondStructC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SecondStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SecondStruct>,
         );
         pub(crate) fn __rust_thunk___ZN12SecondStructC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SecondStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SecondStruct>,
             __param_0: ctor::RvalueReference<'b, crate::SecondStruct>,
         );
         pub(crate) fn __rust_thunk___Z11second_funcv() -> i32;
diff --git a/rs_bindings_from_cc/test/golden/lifetimes_rs_api.rs b/rs_bindings_from_cc/test/golden/lifetimes_rs_api.rs
index 555cf8f..9715b34 100644
--- a/rs_bindings_from_cc/test/golden/lifetimes_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/lifetimes_rs_api.rs
@@ -17,31 +17,31 @@
 
 #[inline(always)]
 pub fn AddHook(__param_0: Option<extern "C" fn()>) {
-    unsafe { detail::__rust_thunk___Z7AddHookPFvvE(__param_0) }
+    unsafe { crate::detail::__rust_thunk___Z7AddHookPFvvE(__param_0) }
 }
 
 pub type FunctionPointer = Option<extern "C" fn()>;
 
 #[inline(always)]
 pub fn AddHookWithTypedef(hook: Option<extern "C" fn()>) {
-    unsafe { detail::__rust_thunk___Z18AddHookWithTypedefPFvvE(hook) }
+    unsafe { crate::detail::__rust_thunk___Z18AddHookWithTypedefPFvvE(hook) }
 }
 
 #[inline(always)]
 pub fn AddAnotherHook(__param_0: extern "C" fn()) {
-    unsafe { detail::__rust_thunk___Z14AddAnotherHookRFvvE(__param_0) }
+    unsafe { crate::detail::__rust_thunk___Z14AddAnotherHookRFvvE(__param_0) }
 }
 
 pub type FunctionReference = extern "C" fn();
 
 #[inline(always)]
 pub fn AddAnotherHookWithTypedef(hook: extern "C" fn()) {
-    unsafe { detail::__rust_thunk___Z25AddAnotherHookWithTypedefRFvvE(hook) }
+    unsafe { crate::detail::__rust_thunk___Z25AddAnotherHookWithTypedefRFvvE(hook) }
 }
 
 #[inline(always)]
 pub unsafe fn ConsumeArray(pair: *mut i32) {
-    detail::__rust_thunk___Z12ConsumeArrayPi(pair)
+    crate::detail::__rust_thunk___Z12ConsumeArrayPi(pair)
 }
 
 // rs_bindings_from_cc/test/golden/lifetimes.h;l=20
@@ -50,7 +50,7 @@
 
 #[inline(always)]
 pub unsafe fn ConsumeArrayWithTypedef(__param_0: *mut i32) {
-    detail::__rust_thunk___Z23ConsumeArrayWithTypedefPi(__param_0)
+    crate::detail::__rust_thunk___Z23ConsumeArrayWithTypedefPi(__param_0)
 }
 
 // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_LIFETIMES_H_
diff --git a/rs_bindings_from_cc/test/golden/namespace_rs_api.rs b/rs_bindings_from_cc/test/golden/namespace_rs_api.rs
index c297716..0815592 100644
--- a/rs_bindings_from_cc/test/golden/namespace_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/namespace_rs_api.rs
@@ -17,8 +17,6 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 pub mod test_namespace_bindings {
-    use super::*;
-
     #[repr(C)]
     pub struct S {
         pub i: i32,
@@ -53,15 +51,13 @@
     /// Free comment inside namespace
     #[inline(always)]
     pub fn f(s: crate::test_namespace_bindings::S) -> i32 {
-        unsafe { detail::__rust_thunk___ZN23test_namespace_bindings1fENS_1SE(s) }
+        unsafe { crate::detail::__rust_thunk___ZN23test_namespace_bindings1fENS_1SE(s) }
     }
 
     pub mod inner {
-        use super::*;
-
         #[inline(always)]
         pub fn i() {
-            unsafe { detail::__rust_thunk___ZN23test_namespace_bindings5inner1iEv() }
+            unsafe { crate::detail::__rust_thunk___ZN23test_namespace_bindings5inner1iEv() }
         }
     }
 
@@ -72,23 +68,19 @@
 
 #[inline(always)]
 pub fn identity(s: crate::test_namespace_bindings::S) -> crate::test_namespace_bindings::S {
-    unsafe { detail::__rust_thunk___Z8identityN23test_namespace_bindings1SE(s) }
+    unsafe { crate::detail::__rust_thunk___Z8identityN23test_namespace_bindings1SE(s) }
 }
 
 pub mod test_namespace_bindings_reopened {
-    use super::*;
-
     #[inline(always)]
     pub fn x() {
-        unsafe { detail::__rust_thunk___ZN32test_namespace_bindings_reopened1xEv() }
+        unsafe { crate::detail::__rust_thunk___ZN32test_namespace_bindings_reopened1xEv() }
     }
 
     pub mod inner {
-        use super::*;
-
         #[repr(C)]
         pub struct S {
-            __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+            __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
         }
         forward_declare::unsafe_define!(
             forward_declare::symbol!("S"),
diff --git a/rs_bindings_from_cc/test/golden/no_elided_lifetimes_rs_api.rs b/rs_bindings_from_cc/test/golden/no_elided_lifetimes_rs_api.rs
index 3f4c055..89eed7d 100644
--- a/rs_bindings_from_cc/test/golden/no_elided_lifetimes_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/no_elided_lifetimes_rs_api.rs
@@ -18,13 +18,13 @@
 
 #[inline(always)]
 pub unsafe fn free_function(p1: *mut i32) -> *mut i32 {
-    detail::__rust_thunk___Z13free_functionRi(p1)
+    crate::detail::__rust_thunk___Z13free_functionRi(p1)
 }
 
 #[derive(Clone, Copy)]
 #[repr(C)]
 pub struct S {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("S"), crate::S);
 
@@ -51,20 +51,20 @@
 impl S {
     #[inline(always)]
     pub unsafe fn const_method(__this: *const crate::S, p1: *mut i32, p2: *mut i32) -> *mut i32 {
-        detail::__rust_thunk___ZNK1S12const_methodERiS0_(__this, p1, p2)
+        crate::detail::__rust_thunk___ZNK1S12const_methodERiS0_(__this, p1, p2)
     }
 }
 
 impl S {
     #[inline(always)]
     pub unsafe fn method(__this: *mut crate::S, p1: *mut i32, p2: *mut i32) -> *mut i32 {
-        detail::__rust_thunk___ZN1S6methodERiS0_(__this, p1, p2)
+        crate::detail::__rust_thunk___ZN1S6methodERiS0_(__this, p1, p2)
     }
 }
 
 #[inline(always)]
 pub unsafe fn take_pointer(p: *mut i32) {
-    detail::__rust_thunk___Z12take_pointerPi(p)
+    crate::detail::__rust_thunk___Z12take_pointerPi(p)
 }
 
 // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_NO_ELIDED_LIFETIMES_H_
diff --git a/rs_bindings_from_cc/test/golden/nontrivial_type_rs_api.rs b/rs_bindings_from_cc/test/golden/nontrivial_type_rs_api.rs
index 1096cb9..e02ea22 100644
--- a/rs_bindings_from_cc/test/golden/nontrivial_type_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/nontrivial_type_rs_api.rs
@@ -35,9 +35,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN10NontrivialC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN10NontrivialC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -50,9 +50,9 @@
     fn ctor_new(args: i32) -> Self::CtorType {
         let field = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN10NontrivialC1Ei(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN10NontrivialC1Ei(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     field,
                 );
             },
@@ -74,9 +74,9 @@
     fn ctor_new(args: (i32, i32)) -> Self::CtorType {
         let (field, unused) = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN10NontrivialC1Eii(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN10NontrivialC1Eii(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     field,
                     unused,
                 );
@@ -91,9 +91,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::Nontrivial>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN10NontrivialC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN10NontrivialC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -112,14 +112,14 @@
 impl Drop for Nontrivial {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN10NontrivialD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN10NontrivialD1Ev(self) }
     }
 }
 
 impl Nontrivial {
     #[inline(always)]
-    pub fn MemberFunction<'a>(self: rust_std::pin::Pin<&'a mut Self>) {
-        unsafe { detail::__rust_thunk___ZN10Nontrivial14MemberFunctionEv(self) }
+    pub fn MemberFunction<'a>(self: crate::rust_std::pin::Pin<&'a mut Self>) {
+        unsafe { crate::detail::__rust_thunk___ZN10Nontrivial14MemberFunctionEv(self) }
     }
 }
 
@@ -144,9 +144,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16NontrivialInlineC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16NontrivialInlineC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -159,9 +159,9 @@
     fn ctor_new(args: i32) -> Self::CtorType {
         let field = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16NontrivialInlineC1Ei(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16NontrivialInlineC1Ei(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     field,
                 );
             },
@@ -183,9 +183,9 @@
     fn ctor_new(args: (i32, i32)) -> Self::CtorType {
         let (field, unused) = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16NontrivialInlineC1Eii(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16NontrivialInlineC1Eii(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     field,
                     unused,
                 );
@@ -200,9 +200,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::NontrivialInline>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16NontrivialInlineC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16NontrivialInlineC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -221,14 +221,14 @@
 impl Drop for NontrivialInline {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN16NontrivialInlineD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN16NontrivialInlineD1Ev(self) }
     }
 }
 
 impl NontrivialInline {
     #[inline(always)]
-    pub fn MemberFunction<'a>(self: rust_std::pin::Pin<&'a mut Self>) {
-        unsafe { detail::__rust_thunk___ZN16NontrivialInline14MemberFunctionEv(self) }
+    pub fn MemberFunction<'a>(self: crate::rust_std::pin::Pin<&'a mut Self>) {
+        unsafe { crate::detail::__rust_thunk___ZN16NontrivialInline14MemberFunctionEv(self) }
     }
 }
 
@@ -239,7 +239,7 @@
 /// each field.
 #[repr(C)]
 pub struct NontrivialMembers {
-    pub nontrivial_member: rust_std::mem::ManuallyDrop<crate::Nontrivial>,
+    pub nontrivial_member: crate::rust_std::mem::ManuallyDrop<crate::Nontrivial>,
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("NontrivialMembers"),
@@ -254,9 +254,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN17NontrivialMembersC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN17NontrivialMembersC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -269,9 +269,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::NontrivialMembers>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN17NontrivialMembersC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN17NontrivialMembersC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -292,7 +292,7 @@
 impl Drop for NontrivialMembers {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN17NontrivialMembersD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN17NontrivialMembersD1Ev(self) }
     }
 }
 
@@ -314,9 +314,9 @@
 impl Default for NontrivialUnpin {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN15NontrivialUnpinC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN15NontrivialUnpinC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -333,9 +333,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::Nontrivial>> for NontrivialUnpin {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::Nontrivial>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN15NontrivialUnpinC1EO10Nontrivial(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN15NontrivialUnpinC1EO10Nontrivial(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -344,14 +344,14 @@
 impl Drop for NontrivialUnpin {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN15NontrivialUnpinD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN15NontrivialUnpinD1Ev(self) }
     }
 }
 
 impl NontrivialUnpin {
     #[inline(always)]
     pub fn MemberFunction<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN15NontrivialUnpin14MemberFunctionEv(self) }
+        unsafe { crate::detail::__rust_thunk___ZN15NontrivialUnpin14MemberFunctionEv(self) }
     }
 }
 
@@ -365,7 +365,7 @@
 
 #[inline(always)]
 pub fn TakesByValueUnpin(nontrivial: crate::NontrivialUnpin) {
-    unsafe { detail::__rust_thunk___Z17TakesByValueUnpin15NontrivialUnpin(nontrivial) }
+    unsafe { crate::detail::__rust_thunk___Z17TakesByValueUnpin15NontrivialUnpin(nontrivial) }
 }
 
 // rs_bindings_from_cc/test/golden/nontrivial_type.h;l=69
@@ -374,33 +374,35 @@
 
 #[inline(always)]
 pub fn ReturnsByValueUnpin() -> crate::NontrivialUnpin {
-    unsafe { detail::__rust_thunk___Z19ReturnsByValueUnpinv() }
+    unsafe { crate::detail::__rust_thunk___Z19ReturnsByValueUnpinv() }
 }
 
 #[inline(always)]
 pub fn TakesByConstReference<'a>(nontrivial: &'a crate::Nontrivial) -> &'a crate::Nontrivial {
-    unsafe { detail::__rust_thunk___Z21TakesByConstReferenceRK10Nontrivial(nontrivial) }
+    unsafe { crate::detail::__rust_thunk___Z21TakesByConstReferenceRK10Nontrivial(nontrivial) }
 }
 
 #[inline(always)]
 pub fn TakesByReference<'a>(
-    nontrivial: rust_std::pin::Pin<&'a mut crate::Nontrivial>,
-) -> rust_std::pin::Pin<&'a mut crate::Nontrivial> {
-    unsafe { detail::__rust_thunk___Z16TakesByReferenceR10Nontrivial(nontrivial) }
+    nontrivial: crate::rust_std::pin::Pin<&'a mut crate::Nontrivial>,
+) -> crate::rust_std::pin::Pin<&'a mut crate::Nontrivial> {
+    unsafe { crate::detail::__rust_thunk___Z16TakesByReferenceR10Nontrivial(nontrivial) }
 }
 
 #[inline(always)]
 pub fn TakesByConstReferenceUnpin<'a>(
     nontrivial: &'a crate::NontrivialUnpin,
 ) -> &'a crate::NontrivialUnpin {
-    unsafe { detail::__rust_thunk___Z26TakesByConstReferenceUnpinRK15NontrivialUnpin(nontrivial) }
+    unsafe {
+        crate::detail::__rust_thunk___Z26TakesByConstReferenceUnpinRK15NontrivialUnpin(nontrivial)
+    }
 }
 
 #[inline(always)]
 pub fn TakesByReferenceUnpin<'a>(
     nontrivial: &'a mut crate::NontrivialUnpin,
 ) -> &'a mut crate::NontrivialUnpin {
-    unsafe { detail::__rust_thunk___Z21TakesByReferenceUnpinR15NontrivialUnpin(nontrivial) }
+    unsafe { crate::detail::__rust_thunk___Z21TakesByReferenceUnpinR15NontrivialUnpin(nontrivial) }
 }
 
 // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_NONTRIVIAL_TYPE_H_
@@ -411,57 +413,57 @@
     extern "C" {
         #[link_name = "_ZN10NontrivialC1Ev"]
         pub(crate) fn __rust_thunk___ZN10NontrivialC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Nontrivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Nontrivial>,
         );
         #[link_name = "_ZN10NontrivialC1Ei"]
         pub(crate) fn __rust_thunk___ZN10NontrivialC1Ei<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Nontrivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Nontrivial>,
             field: i32,
         );
         #[link_name = "_ZN10NontrivialC1Eii"]
         pub(crate) fn __rust_thunk___ZN10NontrivialC1Eii<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Nontrivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Nontrivial>,
             field: i32,
             unused: i32,
         );
         #[link_name = "_ZN10NontrivialC1EOS_"]
         pub(crate) fn __rust_thunk___ZN10NontrivialC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Nontrivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Nontrivial>,
             __param_0: ctor::RvalueReference<'b, crate::Nontrivial>,
         );
         #[link_name = "_ZN10NontrivialD1Ev"]
         pub(crate) fn __rust_thunk___ZN10NontrivialD1Ev<'a>(__this: *mut crate::Nontrivial);
         #[link_name = "_ZN10Nontrivial14MemberFunctionEv"]
         pub(crate) fn __rust_thunk___ZN10Nontrivial14MemberFunctionEv<'a>(
-            __this: rust_std::pin::Pin<&'a mut crate::Nontrivial>,
+            __this: crate::rust_std::pin::Pin<&'a mut crate::Nontrivial>,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInlineC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialInline>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialInline>,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInlineC1Ei<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialInline>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialInline>,
             field: i32,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInlineC1Eii<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialInline>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialInline>,
             field: i32,
             unused: i32,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInlineC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialInline>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialInline>,
             __param_0: ctor::RvalueReference<'b, crate::NontrivialInline>,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInlineD1Ev<'a>(
             __this: *mut crate::NontrivialInline,
         );
         pub(crate) fn __rust_thunk___ZN16NontrivialInline14MemberFunctionEv<'a>(
-            __this: rust_std::pin::Pin<&'a mut crate::NontrivialInline>,
+            __this: crate::rust_std::pin::Pin<&'a mut crate::NontrivialInline>,
         );
         pub(crate) fn __rust_thunk___ZN17NontrivialMembersC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialMembers>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialMembers>,
         );
         pub(crate) fn __rust_thunk___ZN17NontrivialMembersC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialMembers>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialMembers>,
             __param_0: ctor::RvalueReference<'b, crate::NontrivialMembers>,
         );
         pub(crate) fn __rust_thunk___ZN17NontrivialMembersD1Ev<'a>(
@@ -469,11 +471,11 @@
         );
         #[link_name = "_ZN15NontrivialUnpinC1Ev"]
         pub(crate) fn __rust_thunk___ZN15NontrivialUnpinC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialUnpin>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialUnpin>,
         );
         #[link_name = "_ZN15NontrivialUnpinC1EO10Nontrivial"]
         pub(crate) fn __rust_thunk___ZN15NontrivialUnpinC1EO10Nontrivial<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialUnpin>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialUnpin>,
             __param_0: ctor::RvalueReference<'b, crate::Nontrivial>,
         );
         #[link_name = "_ZN15NontrivialUnpinD1Ev"]
@@ -496,8 +498,8 @@
         ) -> &'a crate::Nontrivial;
         #[link_name = "_Z16TakesByReferenceR10Nontrivial"]
         pub(crate) fn __rust_thunk___Z16TakesByReferenceR10Nontrivial<'a>(
-            nontrivial: rust_std::pin::Pin<&'a mut crate::Nontrivial>,
-        ) -> rust_std::pin::Pin<&'a mut crate::Nontrivial>;
+            nontrivial: crate::rust_std::pin::Pin<&'a mut crate::Nontrivial>,
+        ) -> crate::rust_std::pin::Pin<&'a mut crate::Nontrivial>;
         #[link_name = "_Z26TakesByConstReferenceUnpinRK15NontrivialUnpin"]
         pub(crate) fn __rust_thunk___Z26TakesByConstReferenceUnpinRK15NontrivialUnpin<'a>(
             nontrivial: &'a crate::NontrivialUnpin,
diff --git a/rs_bindings_from_cc/test/golden/polymorphic_rs_api.rs b/rs_bindings_from_cc/test/golden/polymorphic_rs_api.rs
index 284af22..d957482 100644
--- a/rs_bindings_from_cc/test/golden/polymorphic_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/polymorphic_rs_api.rs
@@ -18,7 +18,7 @@
 
 #[repr(C, align(8))]
 pub struct PolymorphicBase {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 8],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 8],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("PolymorphicBase"),
@@ -33,9 +33,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN15PolymorphicBaseC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN15PolymorphicBaseC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -48,9 +48,9 @@
     fn ctor_new(args: &'b crate::PolymorphicBase) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN15PolymorphicBaseC1ERKS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN15PolymorphicBaseC1ERKS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -73,13 +73,13 @@
 impl Drop for PolymorphicBase {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN15PolymorphicBaseD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN15PolymorphicBaseD1Ev(self) }
     }
 }
 
 #[repr(C, align(8))]
 pub struct PolymorphicBase2 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 8],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 8],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("PolymorphicBase2"),
@@ -94,9 +94,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16PolymorphicBase2C1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16PolymorphicBase2C1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -109,9 +109,9 @@
     fn ctor_new(args: &'b crate::PolymorphicBase2) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN16PolymorphicBase2C1ERKS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN16PolymorphicBase2C1ERKS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -133,21 +133,21 @@
 
 impl PolymorphicBase2 {
     #[inline(always)]
-    pub fn Foo<'a>(self: rust_std::pin::Pin<&'a mut Self>) {
-        unsafe { detail::__rust_thunk___ZN16PolymorphicBase23FooEv(self) }
+    pub fn Foo<'a>(self: crate::rust_std::pin::Pin<&'a mut Self>) {
+        unsafe { crate::detail::__rust_thunk___ZN16PolymorphicBase23FooEv(self) }
     }
 }
 
 impl Drop for PolymorphicBase2 {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN16PolymorphicBase2D1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN16PolymorphicBase2D1Ev(self) }
     }
 }
 
 #[repr(C, align(8))]
 pub struct PolymorphicDerived {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 16],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 16],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("PolymorphicDerived"),
@@ -162,9 +162,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN18PolymorphicDerivedC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN18PolymorphicDerivedC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -177,9 +177,9 @@
     fn ctor_new(args: &'b crate::PolymorphicDerived) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN18PolymorphicDerivedC1ERKS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN18PolymorphicDerivedC1ERKS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -203,9 +203,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::PolymorphicDerived>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN18PolymorphicDerivedC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN18PolymorphicDerivedC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -226,7 +226,7 @@
 impl Drop for PolymorphicDerived {
     #[inline(always)]
     fn drop<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN18PolymorphicDerivedD1Ev(self) }
+        unsafe { crate::detail::__rust_thunk___ZN18PolymorphicDerivedD1Ev(self) }
     }
 }
 
@@ -245,37 +245,37 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN15PolymorphicBaseC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicBase>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicBase>,
         );
         pub(crate) fn __rust_thunk___ZN15PolymorphicBaseC1ERKS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicBase>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicBase>,
             __param_0: &'b crate::PolymorphicBase,
         );
         pub(crate) fn __rust_thunk___ZN15PolymorphicBaseD1Ev<'a>(
             __this: *mut crate::PolymorphicBase,
         );
         pub(crate) fn __rust_thunk___ZN16PolymorphicBase2C1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicBase2>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicBase2>,
         );
         pub(crate) fn __rust_thunk___ZN16PolymorphicBase2C1ERKS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicBase2>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicBase2>,
             __param_0: &'b crate::PolymorphicBase2,
         );
         pub(crate) fn __rust_thunk___ZN16PolymorphicBase23FooEv<'a>(
-            __this: rust_std::pin::Pin<&'a mut crate::PolymorphicBase2>,
+            __this: crate::rust_std::pin::Pin<&'a mut crate::PolymorphicBase2>,
         );
         pub(crate) fn __rust_thunk___ZN16PolymorphicBase2D1Ev<'a>(
             __this: *mut crate::PolymorphicBase2,
         );
         pub(crate) fn __rust_thunk___ZN18PolymorphicDerivedC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
         );
         pub(crate) fn __rust_thunk___ZN18PolymorphicDerivedC1ERKS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
             __param_0: &'b crate::PolymorphicDerived,
         );
         pub(crate) fn __rust_thunk___ZN18PolymorphicDerivedC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::PolymorphicDerived>,
             __param_0: ctor::RvalueReference<'b, crate::PolymorphicDerived>,
         );
         pub(crate) fn __rust_thunk___ZN18PolymorphicDerivedD1Ev<'a>(
diff --git a/rs_bindings_from_cc/test/golden/private_members_rs_api.rs b/rs_bindings_from_cc/test/golden/private_members_rs_api.rs
index 65370ec..ee1bdc2 100644
--- a/rs_bindings_from_cc/test/golden/private_members_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/private_members_rs_api.rs
@@ -27,9 +27,9 @@
 impl Default for SomeClass {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN9SomeClassC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN9SomeClassC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -38,9 +38,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::SomeClass>> for SomeClass {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::SomeClass>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN9SomeClassC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN9SomeClassC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -57,14 +57,14 @@
 impl SomeClass {
     #[inline(always)]
     pub fn public_method<'a>(&'a mut self) {
-        unsafe { detail::__rust_thunk___ZN9SomeClass13public_methodEv(self) }
+        unsafe { crate::detail::__rust_thunk___ZN9SomeClass13public_methodEv(self) }
     }
 }
 
 impl SomeClass {
     #[inline(always)]
     pub fn public_static_method() {
-        unsafe { detail::__rust_thunk___ZN9SomeClass20public_static_methodEv() }
+        unsafe { crate::detail::__rust_thunk___ZN9SomeClass20public_static_methodEv() }
     }
 }
 
@@ -75,10 +75,10 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN9SomeClassC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeClass>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeClass>,
         );
         pub(crate) fn __rust_thunk___ZN9SomeClassC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeClass>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeClass>,
             __param_0: ctor::RvalueReference<'b, crate::SomeClass>,
         );
         #[link_name = "_ZN9SomeClass13public_methodEv"]
diff --git a/rs_bindings_from_cc/test/golden/static_methods_rs_api.rs b/rs_bindings_from_cc/test/golden/static_methods_rs_api.rs
index 9aa9274..f0548f3 100644
--- a/rs_bindings_from_cc/test/golden/static_methods_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/static_methods_rs_api.rs
@@ -26,9 +26,9 @@
 impl Default for SomeClass {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN9SomeClassC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN9SomeClassC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -37,9 +37,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::SomeClass>> for SomeClass {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::SomeClass>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN9SomeClassC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN9SomeClassC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -58,7 +58,9 @@
     #[inline(always)]
     pub fn static_factory_method(initial_value_of_field: i32) -> crate::SomeClass {
         unsafe {
-            detail::__rust_thunk___ZN9SomeClass21static_factory_methodEi(initial_value_of_field)
+            crate::detail::__rust_thunk___ZN9SomeClass21static_factory_methodEi(
+                initial_value_of_field,
+            )
         }
     }
 }
@@ -68,7 +70,9 @@
     #[inline(always)]
     pub fn static_method_that_multiplies_its_args(x: i32, y: i32) -> i32 {
         unsafe {
-            detail::__rust_thunk___ZN9SomeClass38static_method_that_multiplies_its_argsEii(x, y)
+            crate::detail::__rust_thunk___ZN9SomeClass38static_method_that_multiplies_its_argsEii(
+                x, y,
+            )
         }
     }
 }
@@ -80,10 +84,10 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN9SomeClassC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeClass>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeClass>,
         );
         pub(crate) fn __rust_thunk___ZN9SomeClassC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeClass>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeClass>,
             __param_0: ctor::RvalueReference<'b, crate::SomeClass>,
         );
         #[link_name = "_ZN9SomeClass21static_factory_methodEi"]
diff --git a/rs_bindings_from_cc/test/golden/trivial_type_rs_api.rs b/rs_bindings_from_cc/test/golden/trivial_type_rs_api.rs
index 037a3fa..24a2bc5 100644
--- a/rs_bindings_from_cc/test/golden/trivial_type_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/trivial_type_rs_api.rs
@@ -28,9 +28,9 @@
 impl Default for Trivial {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN7TrivialC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN7TrivialC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -39,9 +39,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::Trivial>> for Trivial {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::Trivial>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN7TrivialC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN7TrivialC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -70,9 +70,9 @@
 impl Default for TrivialWithDefaulted {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN20TrivialWithDefaultedC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN20TrivialWithDefaultedC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -85,9 +85,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::TrivialWithDefaulted>> for TrivialWithDefaulted {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::TrivialWithDefaulted>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN20TrivialWithDefaultedC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN20TrivialWithDefaultedC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -116,9 +116,9 @@
     fn ctor_new(args: ()) -> Self::CtorType {
         let () = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN15TrivialNonfinalC1Ev(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN15TrivialNonfinalC1Ev(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                 );
             },
         )
@@ -131,9 +131,9 @@
     fn ctor_new(args: &'b crate::TrivialNonfinal) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN15TrivialNonfinalC1ERKS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN15TrivialNonfinalC1ERKS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -155,9 +155,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::TrivialNonfinal>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN15TrivialNonfinalC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN15TrivialNonfinalC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -183,36 +183,44 @@
 
 #[inline(always)]
 pub fn TakesByValue(trivial: crate::Trivial) {
-    unsafe { detail::__rust_thunk___Z12TakesByValue7Trivial(trivial) }
+    unsafe { crate::detail::__rust_thunk___Z12TakesByValue7Trivial(trivial) }
 }
 
 #[inline(always)]
 pub fn TakesWithDefaultedByValue(trivial: crate::TrivialWithDefaulted) {
-    unsafe { detail::__rust_thunk___Z25TakesWithDefaultedByValue20TrivialWithDefaulted(trivial) }
+    unsafe {
+        crate::detail::__rust_thunk___Z25TakesWithDefaultedByValue20TrivialWithDefaulted(trivial)
+    }
 }
 
 #[inline(always)]
 pub fn TakesTrivialNonfinalByValue(trivial: crate::TrivialNonfinal) {
-    unsafe { detail::__rust_thunk___Z27TakesTrivialNonfinalByValue15TrivialNonfinal(trivial) }
+    unsafe {
+        crate::detail::__rust_thunk___Z27TakesTrivialNonfinalByValue15TrivialNonfinal(trivial)
+    }
 }
 
 #[inline(always)]
 pub fn TakesByReference<'a>(trivial: &'a mut crate::Trivial) {
-    unsafe { detail::__rust_thunk___Z16TakesByReferenceR7Trivial(trivial) }
+    unsafe { crate::detail::__rust_thunk___Z16TakesByReferenceR7Trivial(trivial) }
 }
 
 #[inline(always)]
 pub fn TakesWithDefaultedByReference<'a>(trivial: &'a mut crate::TrivialWithDefaulted) {
     unsafe {
-        detail::__rust_thunk___Z29TakesWithDefaultedByReferenceR20TrivialWithDefaulted(trivial)
+        crate::detail::__rust_thunk___Z29TakesWithDefaultedByReferenceR20TrivialWithDefaulted(
+            trivial,
+        )
     }
 }
 
 #[inline(always)]
 pub fn TakesTrivialNonfinalByReference<'a>(
-    trivial: rust_std::pin::Pin<&'a mut crate::TrivialNonfinal>,
+    trivial: crate::rust_std::pin::Pin<&'a mut crate::TrivialNonfinal>,
 ) {
-    unsafe { detail::__rust_thunk___Z31TakesTrivialNonfinalByReferenceR15TrivialNonfinal(trivial) }
+    unsafe {
+        crate::detail::__rust_thunk___Z31TakesTrivialNonfinalByReferenceR15TrivialNonfinal(trivial)
+    }
 }
 
 // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_TRIVIAL_TYPE_H_
@@ -222,28 +230,28 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN7TrivialC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Trivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Trivial>,
         );
         pub(crate) fn __rust_thunk___ZN7TrivialC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::Trivial>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::Trivial>,
             __param_0: ctor::RvalueReference<'b, crate::Trivial>,
         );
         pub(crate) fn __rust_thunk___ZN20TrivialWithDefaultedC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::TrivialWithDefaulted>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::TrivialWithDefaulted>,
         );
         pub(crate) fn __rust_thunk___ZN20TrivialWithDefaultedC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::TrivialWithDefaulted>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::TrivialWithDefaulted>,
             __param_0: ctor::RvalueReference<'b, crate::TrivialWithDefaulted>,
         );
         pub(crate) fn __rust_thunk___ZN15TrivialNonfinalC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
         );
         pub(crate) fn __rust_thunk___ZN15TrivialNonfinalC1ERKS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
             __param_0: &'b crate::TrivialNonfinal,
         );
         pub(crate) fn __rust_thunk___ZN15TrivialNonfinalC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::TrivialNonfinal>,
             __param_0: ctor::RvalueReference<'b, crate::TrivialNonfinal>,
         );
         #[link_name = "_Z12TakesByValue7Trivial"]
@@ -266,7 +274,7 @@
         );
         #[link_name = "_Z31TakesTrivialNonfinalByReferenceR15TrivialNonfinal"]
         pub(crate) fn __rust_thunk___Z31TakesTrivialNonfinalByReferenceR15TrivialNonfinal<'a>(
-            trivial: rust_std::pin::Pin<&'a mut crate::TrivialNonfinal>,
+            trivial: crate::rust_std::pin::Pin<&'a mut crate::TrivialNonfinal>,
         );
     }
 }
diff --git a/rs_bindings_from_cc/test/golden/types_rs_api.rs b/rs_bindings_from_cc/test/golden/types_rs_api.rs
index aed8b99..cb8db62 100644
--- a/rs_bindings_from_cc/test/golden/types_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/types_rs_api.rs
@@ -19,16 +19,16 @@
 #[derive(Clone, Copy)]
 #[repr(C)]
 pub struct SomeStruct {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("SomeStruct"), crate::SomeStruct);
 
 impl Default for SomeStruct {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN10SomeStructC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN10SomeStructC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -37,9 +37,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::SomeStruct>> for SomeStruct {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::SomeStruct>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN10SomeStructC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN10SomeStructC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -58,16 +58,16 @@
 #[derive(Clone, Copy)]
 #[repr(C)]
 pub union EmptyUnion {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("EmptyUnion"), crate::EmptyUnion);
 
 impl Default for EmptyUnion {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN10EmptyUnionC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN10EmptyUnionC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -76,9 +76,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::EmptyUnion>> for EmptyUnion {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::EmptyUnion>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN10EmptyUnionC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN10EmptyUnionC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -159,9 +159,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::FieldTypeTestStruct>> for FieldTypeTestStruct {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::FieldTypeTestStruct>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN19FieldTypeTestStructC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN19FieldTypeTestStructC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -182,9 +182,9 @@
 impl Default for NonEmptyUnion {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN13NonEmptyUnionC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN13NonEmptyUnionC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -193,9 +193,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::NonEmptyUnion>> for NonEmptyUnion {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::NonEmptyUnion>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN13NonEmptyUnionC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN13NonEmptyUnionC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -211,7 +211,7 @@
 
 #[inline(always)]
 pub fn VoidReturningFunction() {
-    unsafe { detail::__rust_thunk___Z21VoidReturningFunctionv() }
+    unsafe { crate::detail::__rust_thunk___Z21VoidReturningFunctionv() }
 }
 
 #[repr(transparent)]
@@ -240,28 +240,28 @@
     use super::*;
     extern "C" {
         pub(crate) fn __rust_thunk___ZN10SomeStructC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeStruct>,
         );
         pub(crate) fn __rust_thunk___ZN10SomeStructC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::SomeStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::SomeStruct>,
             __param_0: ctor::RvalueReference<'b, crate::SomeStruct>,
         );
         pub(crate) fn __rust_thunk___ZN10EmptyUnionC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::EmptyUnion>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::EmptyUnion>,
         );
         pub(crate) fn __rust_thunk___ZN10EmptyUnionC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::EmptyUnion>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::EmptyUnion>,
             __param_0: ctor::RvalueReference<'b, crate::EmptyUnion>,
         );
         pub(crate) fn __rust_thunk___ZN19FieldTypeTestStructC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::FieldTypeTestStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::FieldTypeTestStruct>,
             __param_0: ctor::RvalueReference<'b, crate::FieldTypeTestStruct>,
         );
         pub(crate) fn __rust_thunk___ZN13NonEmptyUnionC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NonEmptyUnion>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NonEmptyUnion>,
         );
         pub(crate) fn __rust_thunk___ZN13NonEmptyUnionC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NonEmptyUnion>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NonEmptyUnion>,
             __param_0: ctor::RvalueReference<'b, crate::NonEmptyUnion>,
         );
         pub(crate) fn __rust_thunk___Z21VoidReturningFunctionv();
diff --git a/rs_bindings_from_cc/test/golden/unsupported_rs_api.rs b/rs_bindings_from_cc/test/golden/unsupported_rs_api.rs
index 0ff0c0e..529cc0d 100644
--- a/rs_bindings_from_cc/test/golden/unsupported_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/unsupported_rs_api.rs
@@ -35,9 +35,9 @@
     fn ctor_new(args: ctor::RvalueReference<'b, crate::NontrivialCustomType>) -> Self::CtorType {
         let __param_0 = args;
         ctor::FnCtor::new(
-            move |dest: rust_std::pin::Pin<&mut rust_std::mem::MaybeUninit<Self>>| unsafe {
-                detail::__rust_thunk___ZN20NontrivialCustomTypeC1EOS_(
-                    rust_std::pin::Pin::into_inner_unchecked(dest),
+            move |dest: crate::rust_std::pin::Pin<&mut crate::rust_std::mem::MaybeUninit<Self>>| unsafe {
+                crate::detail::__rust_thunk___ZN20NontrivialCustomTypeC1EOS_(
+                    crate::rust_std::pin::Pin::into_inner_unchecked(dest),
                     __param_0,
                 );
             },
@@ -82,7 +82,7 @@
 #[derive(Clone, Copy)]
 #[repr(C)]
 pub struct ContainingStruct {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 1],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 1],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("ContainingStruct"),
@@ -92,9 +92,9 @@
 impl Default for ContainingStruct {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN16ContainingStructC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN16ContainingStructC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -103,9 +103,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::ContainingStruct>> for ContainingStruct {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::ContainingStruct>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN16ContainingStructC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN16ContainingStructC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -131,14 +131,14 @@
     extern "C" {
         #[link_name = "_ZN20NontrivialCustomTypeC1EOS_"]
         pub(crate) fn __rust_thunk___ZN20NontrivialCustomTypeC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::NontrivialCustomType>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::NontrivialCustomType>,
             __param_0: ctor::RvalueReference<'b, crate::NontrivialCustomType>,
         );
         pub(crate) fn __rust_thunk___ZN16ContainingStructC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::ContainingStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::ContainingStruct>,
         );
         pub(crate) fn __rust_thunk___ZN16ContainingStructC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::ContainingStruct>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::ContainingStruct>,
             __param_0: ctor::RvalueReference<'b, crate::ContainingStruct>,
         );
     }
diff --git a/rs_bindings_from_cc/test/golden/user_of_base_class_rs_api.rs b/rs_bindings_from_cc/test/golden/user_of_base_class_rs_api.rs
index 3787f42..b75edba 100644
--- a/rs_bindings_from_cc/test/golden/user_of_base_class_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/user_of_base_class_rs_api.rs
@@ -23,7 +23,7 @@
 /// TODO(b/216195042): Correctly namespace base classes in generated Rust code.
 #[repr(C, align(8))]
 pub struct Derived2 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 20],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 20],
     pub derived_1: u8,
 }
 forward_declare::unsafe_define!(forward_declare::symbol!("Derived2"), crate::Derived2);
@@ -52,7 +52,7 @@
 
 unsafe impl oops::Inherits<inheritance_cc::Base0> for Derived2 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const inheritance_cc::Base0 {
-        detail::__crubit_dynamic_upcast__Derived2__to__Base0(derived)
+        crate::detail::__crubit_dynamic_upcast__Derived2__to__Base0(derived)
     }
 }
 unsafe impl oops::Inherits<inheritance_cc::Base1> for Derived2 {
@@ -68,7 +68,7 @@
 
 #[repr(C, align(8))]
 pub struct VirtualDerived2 {
-    __non_field_data: [rust_std::mem::MaybeUninit<u8>; 32],
+    __non_field_data: [crate::rust_std::mem::MaybeUninit<u8>; 32],
 }
 forward_declare::unsafe_define!(
     forward_declare::symbol!("VirtualDerived2"),
@@ -99,17 +99,17 @@
 
 unsafe impl oops::Inherits<inheritance_cc::VirtualBase1> for VirtualDerived2 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const inheritance_cc::VirtualBase1 {
-        detail::__crubit_dynamic_upcast__VirtualDerived2__to__VirtualBase1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived2__to__VirtualBase1(derived)
     }
 }
 unsafe impl oops::Inherits<inheritance_cc::Base1> for VirtualDerived2 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const inheritance_cc::Base1 {
-        detail::__crubit_dynamic_upcast__VirtualDerived2__to__Base1(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived2__to__Base1(derived)
     }
 }
 unsafe impl oops::Inherits<inheritance_cc::VirtualBase2> for VirtualDerived2 {
     unsafe fn upcast_ptr(derived: *const Self) -> *const inheritance_cc::VirtualBase2 {
-        detail::__crubit_dynamic_upcast__VirtualDerived2__to__VirtualBase2(derived)
+        crate::detail::__crubit_dynamic_upcast__VirtualDerived2__to__VirtualBase2(derived)
     }
 }
 
diff --git a/rs_bindings_from_cc/test/golden/user_of_imported_type_rs_api.rs b/rs_bindings_from_cc/test/golden/user_of_imported_type_rs_api.rs
index fb58ca4..f6cbcdd 100644
--- a/rs_bindings_from_cc/test/golden/user_of_imported_type_rs_api.rs
+++ b/rs_bindings_from_cc/test/golden/user_of_imported_type_rs_api.rs
@@ -18,7 +18,7 @@
 
 #[inline(always)]
 pub fn UsesImportedType(t: trivial_type_cc::Trivial) -> trivial_type_cc::Trivial {
-    unsafe { detail::__rust_thunk___Z16UsesImportedType7Trivial(t) }
+    unsafe { crate::detail::__rust_thunk___Z16UsesImportedType7Trivial(t) }
 }
 
 #[derive(Clone, Copy)]
@@ -34,9 +34,9 @@
 impl Default for UserOfImportedType {
     #[inline(always)]
     fn default() -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN18UserOfImportedTypeC1Ev(&mut tmp);
+            crate::detail::__rust_thunk___ZN18UserOfImportedTypeC1Ev(&mut tmp);
             tmp.assume_init()
         }
     }
@@ -45,9 +45,9 @@
 impl<'b> From<ctor::RvalueReference<'b, crate::UserOfImportedType>> for UserOfImportedType {
     #[inline(always)]
     fn from(__param_0: ctor::RvalueReference<'b, crate::UserOfImportedType>) -> Self {
-        let mut tmp = rust_std::mem::MaybeUninit::<Self>::zeroed();
+        let mut tmp = crate::rust_std::mem::MaybeUninit::<Self>::zeroed();
         unsafe {
-            detail::__rust_thunk___ZN18UserOfImportedTypeC1EOS_(&mut tmp, __param_0);
+            crate::detail::__rust_thunk___ZN18UserOfImportedTypeC1EOS_(&mut tmp, __param_0);
             tmp.assume_init()
         }
     }
@@ -72,10 +72,10 @@
             t: trivial_type_cc::Trivial,
         ) -> trivial_type_cc::Trivial;
         pub(crate) fn __rust_thunk___ZN18UserOfImportedTypeC1Ev<'a>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::UserOfImportedType>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::UserOfImportedType>,
         );
         pub(crate) fn __rust_thunk___ZN18UserOfImportedTypeC1EOS_<'a, 'b>(
-            __this: &'a mut rust_std::mem::MaybeUninit<crate::UserOfImportedType>,
+            __this: &'a mut crate::rust_std::mem::MaybeUninit<crate::UserOfImportedType>,
             __param_0: ctor::RvalueReference<'b, crate::UserOfImportedType>,
         );
     }