From bef2e1b9f007df81e9bd42a94c56699273c0dd82 Mon Sep 17 00:00:00 2001 From: datdenkikniet Date: Sun, 23 Mar 2025 10:27:38 +0100 Subject: [PATCH] rtic-sync: remove unnecessary with_mut, safety comment --- rtic-sync/src/channel.rs | 8 ++++---- rtic-sync/src/unsafecell.rs | 10 +++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/rtic-sync/src/channel.rs b/rtic-sync/src/channel.rs index b2792a28496..043d0586762 100644 --- a/rtic-sync/src/channel.rs +++ b/rtic-sync/src/channel.rs @@ -57,10 +57,10 @@ macro_rules! cs_access { where F: FnOnce(&mut $type) -> R, { - self.$name.with_mut(|v| { - let v = unsafe { &mut *v }; - f(v) - }) + let v = self.$name.get_mut(); + // SAFETY: we have exclusive access due to the critical section. + let v = unsafe { v.deref() }; + f(v) } }; } diff --git a/rtic-sync/src/unsafecell.rs b/rtic-sync/src/unsafecell.rs index e1774f8fa16..e3730d48ad8 100644 --- a/rtic-sync/src/unsafecell.rs +++ b/rtic-sync/src/unsafecell.rs @@ -23,19 +23,15 @@ mod core { pub fn get_mut(&self) -> MutPtr { MutPtr(self.0.get()) } - - pub unsafe fn with_mut(&self, f: F) -> R - where - F: FnOnce(*mut T) -> R, - { - f(self.0.get()) - } } pub struct MutPtr(*mut T); impl MutPtr { #[allow(clippy::mut_from_ref)] + /// SAFETY: the caller must guarantee that the contained `*mut T` is not + /// null, and must uphold the same safety requirements as for + /// [`core::primitive::pointer::as_mut`] for the contained `*mut T`. pub unsafe fn deref(&self) -> &mut T { &mut *self.0 }