From 4f05afbf610c420cd03137194c5a5d50466a59e0 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:04:06 +0000 Subject: [PATCH 1/2] clippy: fix borrow_as_ptr lint https://rust-lang.github.io/rust-clippy/master/index.html#borrow_as_ptr --- Cargo.toml | 6 ++++++ src/ref.rs | 7 ++++--- src/wrappers.rs | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 59541bc27c..87c3c293b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -130,3 +130,9 @@ static_assertions = "1.1" testutil = { path = "testutil" } # In tests, unlike in production, zerocopy-derive is not optional zerocopy-derive = { version = "=0.8.39", path = "zerocopy-derive" } + +[workspace.lints.clippy] +borrow_as_ptr = "warn" + +[lints] +workspace = true diff --git a/src/ref.rs b/src/ref.rs index 6354442b63..95917f81f1 100644 --- a/src/ref.rs +++ b/src/ref.rs @@ -1234,16 +1234,17 @@ mod tests { use crate::util::AsAddress as _; let mut buf = Align::<[u8; 8], u64>::default(); + let buf_ptr = buf.t.as_mut_ptr(); + let r = Ref::<_, u64>::from_bytes(&buf.t[..]).unwrap(); let rf = Ref::into_ref(r); assert_eq!(rf, &0u64); - let buf_addr = (&buf.t as *const [u8; 8]).addr(); - assert_eq!((rf as *const u64).addr(), buf_addr); + assert_eq!((rf as *const u64).cast(), buf_ptr); let r = Ref::<_, u64>::from_bytes(&mut buf.t[..]).unwrap(); let rf = Ref::into_mut(r); assert_eq!(rf, &mut 0u64); - assert_eq!((rf as *mut u64).addr(), buf_addr); + assert_eq!((rf as *mut u64).cast(), buf_ptr); *rf = u64::MAX; assert_eq!(buf.t, [0xFF; 8]); diff --git a/src/wrappers.rs b/src/wrappers.rs index 5f2414b0c6..4d32eb89ab 100644 --- a/src/wrappers.rs +++ b/src/wrappers.rs @@ -995,7 +995,7 @@ mod tests { let uninit = MaybeUninit::new(&input); // SAFETY: `uninit` is in an initialized state let output = unsafe { uninit.assume_init() }; - assert_eq!(&input as *const _, output as *const _); + assert!(core::ptr::eq(&input, output)); assert_eq!(input, *output); } @@ -1005,7 +1005,7 @@ mod tests { let uninit = MaybeUninit::new(&input[..]); // SAFETY: `uninit` is in an initialized state let output = unsafe { uninit.assume_init() }; - assert_eq!(&input[..] as *const _, output as *const _); + assert!(core::ptr::eq(&input[..], output)); assert_eq!(input, *output); } } From 026894d0f615c0d1eafd5893597f7cfc3de99bd7 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:16:36 +0000 Subject: [PATCH 2/2] fixup --- src/ref.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/ref.rs b/src/ref.rs index 95917f81f1..6a9972fdf1 100644 --- a/src/ref.rs +++ b/src/ref.rs @@ -1230,21 +1230,18 @@ mod tests { #[allow(unstable_name_collisions)] #[allow(clippy::as_conversions)] fn test_into_ref_mut() { - #[allow(unused)] - use crate::util::AsAddress as _; - let mut buf = Align::<[u8; 8], u64>::default(); let buf_ptr = buf.t.as_mut_ptr(); let r = Ref::<_, u64>::from_bytes(&buf.t[..]).unwrap(); let rf = Ref::into_ref(r); assert_eq!(rf, &0u64); - assert_eq!((rf as *const u64).cast(), buf_ptr); + assert_eq!(core::ptr::addr_of!(*rf).cast(), buf_ptr); let r = Ref::<_, u64>::from_bytes(&mut buf.t[..]).unwrap(); let rf = Ref::into_mut(r); assert_eq!(rf, &mut 0u64); - assert_eq!((rf as *mut u64).cast(), buf_ptr); + assert_eq!(core::ptr::addr_of!(*rf).cast(), buf_ptr); *rf = u64::MAX; assert_eq!(buf.t, [0xFF; 8]);