Use core when appropriate.
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 3dcb50c..f08fc81 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -2116,6 +2116,7 @@
                         .count() >
                         1;
 
+                    let prefix = ctx.trait_prefix();
 
                     // The offset of #[repr(C)] union is always 0, don't need to recheck it.
                     let is_not_packed_union = is_union && !packed;
@@ -2144,19 +2145,19 @@
                                                 {
                                                     // Create an instance of #canonical_ident struct from zero bit pattern
                                                     let struct_instance = unsafe {
-                                                        std::mem::zeroed::<#canonical_ident>()
+                                                        #prefix::mem::zeroed::<#canonical_ident>()
                                                     };
 
                                                     // Get the pointers to the struct and its field
                                                     let struct_ptr = &struct_instance as *const #canonical_ident;
-                                                    let field_ptr = std::ptr::addr_of!(struct_instance.#field_name);
+                                                    let field_ptr = #prefix::ptr::addr_of!(struct_instance.#field_name);
 
                                                     // Get the offset of the field
                                                     let struct_address =  struct_ptr as usize;
                                                     let field_address = field_ptr as usize;
 
                                                     //Do not call the destructor
-                                                    std::mem::forget(struct_instance);
+                                                    #prefix::mem::forget(struct_instance);
 
                                                     field_address.checked_sub(struct_address).unwrap()
                                                 },
diff --git a/tests/expectations/tests/ctypes-prefix-path.rs b/tests/expectations/tests/ctypes-prefix-path.rs
index 25ee0cc..e30de34 100644
--- a/tests/expectations/tests/ctypes-prefix-path.rs
+++ b/tests/expectations/tests/ctypes-prefix-path.rs
@@ -33,12 +33,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.a);
+            let field_ptr = core::ptr::addr_of!(struct_instance.a);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         0usize,
@@ -46,12 +46,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.b);
+            let field_ptr = core::ptr::addr_of!(struct_instance.b);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         4usize,
@@ -59,12 +59,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.bar);
+            let field_ptr = core::ptr::addr_of!(struct_instance.bar);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         8usize,
diff --git a/tests/expectations/tests/derive-debug-bitfield-core.rs b/tests/expectations/tests/derive-debug-bitfield-core.rs
index 366923e..dea02ca 100644
--- a/tests/expectations/tests/derive-debug-bitfield-core.rs
+++ b/tests/expectations/tests/derive-debug-bitfield-core.rs
@@ -114,12 +114,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<C>() };
+            let struct_instance = unsafe { core::mem::zeroed::<C>() };
             let struct_ptr = &struct_instance as *const C;
-            let field_ptr = std::ptr::addr_of!(struct_instance.large_array);
+            let field_ptr = core::ptr::addr_of!(struct_instance.large_array);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         4usize,
diff --git a/tests/expectations/tests/derive-partialeq-core.rs b/tests/expectations/tests/derive-partialeq-core.rs
index 2079d8b..4362a40 100644
--- a/tests/expectations/tests/derive-partialeq-core.rs
+++ b/tests/expectations/tests/derive-partialeq-core.rs
@@ -26,12 +26,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<C>() };
+            let struct_instance = unsafe { core::mem::zeroed::<C>() };
             let struct_ptr = &struct_instance as *const C;
-            let field_ptr = std::ptr::addr_of!(struct_instance.large_array);
+            let field_ptr = core::ptr::addr_of!(struct_instance.large_array);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         0usize,
diff --git a/tests/expectations/tests/no-std.rs b/tests/expectations/tests/no-std.rs
index 9de5d52..7b79f30 100644
--- a/tests/expectations/tests/no-std.rs
+++ b/tests/expectations/tests/no-std.rs
@@ -31,12 +31,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.a);
+            let field_ptr = core::ptr::addr_of!(struct_instance.a);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         0usize,
@@ -44,12 +44,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.b);
+            let field_ptr = core::ptr::addr_of!(struct_instance.b);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         4usize,
@@ -57,12 +57,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.bar);
+            let field_ptr = core::ptr::addr_of!(struct_instance.bar);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         8usize,
diff --git a/tests/expectations/tests/use-core.rs b/tests/expectations/tests/use-core.rs
index 006a98b..3c30c09 100644
--- a/tests/expectations/tests/use-core.rs
+++ b/tests/expectations/tests/use-core.rs
@@ -28,12 +28,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.a);
+            let field_ptr = core::ptr::addr_of!(struct_instance.a);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         0usize,
@@ -41,12 +41,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.b);
+            let field_ptr = core::ptr::addr_of!(struct_instance.b);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         4usize,
@@ -54,12 +54,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.bar);
+            let field_ptr = core::ptr::addr_of!(struct_instance.bar);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         8usize,
diff --git a/tests/expectations/tests/use-core_1_0.rs b/tests/expectations/tests/use-core_1_0.rs
index c0cb163..6794862 100644
--- a/tests/expectations/tests/use-core_1_0.rs
+++ b/tests/expectations/tests/use-core_1_0.rs
@@ -71,12 +71,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.a);
+            let field_ptr = core::ptr::addr_of!(struct_instance.a);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         0usize,
@@ -84,12 +84,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.b);
+            let field_ptr = core::ptr::addr_of!(struct_instance.b);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         4usize,
@@ -97,12 +97,12 @@
     );
     assert_eq!(
         {
-            let struct_instance = unsafe { std::mem::zeroed::<foo>() };
+            let struct_instance = unsafe { core::mem::zeroed::<foo>() };
             let struct_ptr = &struct_instance as *const foo;
-            let field_ptr = std::ptr::addr_of!(struct_instance.bar);
+            let field_ptr = core::ptr::addr_of!(struct_instance.bar);
             let struct_address = struct_ptr as usize;
             let field_address = field_ptr as usize;
-            std::mem::forget(struct_instance);
+            core::mem::forget(struct_instance);
             field_address.checked_sub(struct_address).unwrap()
         },
         8usize,