From 22c298e08ac9a72b7d5fd600f9f3cf961f33d617 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 14 May 2025 13:41:42 +0000 Subject: [PATCH 1/2] replace soft deprecated `addr_of_mut!` with `&mut raw` --- src/disjoint_mut.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/disjoint_mut.rs b/src/disjoint_mut.rs index 6af7985e5..72d490d8e 100644 --- a/src/disjoint_mut.rs +++ b/src/disjoint_mut.rs @@ -23,7 +23,6 @@ use std::ops::RangeInclusive; use std::ops::RangeTo; use std::ops::RangeToInclusive; use std::ptr; -use std::ptr::addr_of_mut; use std::sync::Arc; use zerocopy::AsBytes; use zerocopy::FromBytes; @@ -1018,9 +1017,9 @@ unsafe impl AsMutPtr for [V] { unsafe impl AsMutPtr for Box<[V]> { type Target = V; - unsafe fn as_mut_ptr(ptr: *mut Self) -> *mut Self::Target { - // SAFETY: `AsMutPtr::as_mut_ptr` may derefence `ptr`. - unsafe { addr_of_mut!(**ptr) }.cast() + // SAFETY: `AsMutPtr::as_mut_ptr` may derefence `ptr`. + unsafe fn as_mut_ptr(mut ptr: *mut Self) -> *mut Self::Target { + (&raw mut ptr).cast() } fn len(&self) -> usize { From 4bb8d21cc63fe47357c13634f7489df3b88e305e Mon Sep 17 00:00:00 2001 From: Joe Dye Date: Thu, 15 May 2025 00:06:52 +0100 Subject: [PATCH 2/2] double deref --- src/disjoint_mut.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/disjoint_mut.rs b/src/disjoint_mut.rs index 72d490d8e..13891a0b4 100644 --- a/src/disjoint_mut.rs +++ b/src/disjoint_mut.rs @@ -1012,14 +1012,14 @@ unsafe impl AsMutPtr for [V] { } } -/// SAFETY: We never materialize a `&mut [V]` since we go use [`addr_of_mut!`] +/// SAFETY: We never materialize a `&mut [V]` since we use [`&raw mut`](`addr_of_mut!`) /// to create a `*mut [V]` directly, which we then unsize cast. unsafe impl AsMutPtr for Box<[V]> { type Target = V; // SAFETY: `AsMutPtr::as_mut_ptr` may derefence `ptr`. - unsafe fn as_mut_ptr(mut ptr: *mut Self) -> *mut Self::Target { - (&raw mut ptr).cast() + unsafe fn as_mut_ptr(ptr: *mut Self) -> *mut Self::Target { + unsafe { &raw mut **ptr }.cast() } fn len(&self) -> usize {