Re: [PATCH v4 05/11] rust: xarray: simplify `Guard::load`
Daniel Almeida <[email protected]>
| Newsgroups | org.kernel.vger.rust-for-linux,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
> On 4 Jun 2026, at 16:58, Andreas Hindborg <[email protected]> wrote: > > Simplify the implementation by removing the closure-based API from > `Guard::load` in favor of returning `Option<NonNull<c_void>>` directly. > > Signed-off-by: Andreas Hindborg <[email protected]> > --- > rust/kernel/xarray.rs | 23 +++++++++-------------- > 1 file changed, 9 insertions(+), 14 deletions(-) > > diff --git a/rust/kernel/xarray.rs b/rust/kernel/xarray.rs > index 05e6dc1ffe69..7da57c778669 100644 > --- a/rust/kernel/xarray.rs > +++ b/rust/kernel/xarray.rs > @@ -212,28 +212,23 @@ fn from(value: StoreError<T>) -> Self { > } > > impl<'a, T: ForeignOwnable> Guard<'a, T> { > - fn load<F, U>(&self, index: usize, f: F) -> Option<U> > - where > - F: FnOnce(NonNull<c_void>) -> U, > - { > - let mut state = XArrayState::new(self, index); > - Some(f(state.load()?)) > + fn load(&self, index: usize) -> Option<NonNull<c_void>> { > + XArrayState::new(self, index).load() > } > > /// Provides a reference to the element at the given index. > pub fn get(&self, index: usize) -> Option<T::Borrowed<'_>> { > - self.load(index, |ptr| { > - // SAFETY: `ptr` came from `T::into_foreign`. > - unsafe { T::borrow(ptr.as_ptr()) } > - }) > + let ptr = self.load(index)?; > + // SAFETY: `ptr` came from `T::into_foreign`. > + Some(unsafe { T::borrow(ptr.as_ptr()) }) > } > > /// Provides a mutable reference to the element at the given index. > pub fn get_mut(&mut self, index: usize) -> Option<T::BorrowedMut<'_>> { > - self.load(index, |ptr| { > - // SAFETY: `ptr` came from `T::into_foreign`. > - unsafe { T::borrow_mut(ptr.as_ptr()) } > - }) > + let ptr = self.load(index)?; > + > + // SAFETY: `ptr` came from `T::into_foreign`. > + Some(unsafe { T::borrow_mut(ptr.as_ptr()) }) > } > > /// Removes and returns the element at the given index. > > -- > 2.51.2 > > > Reviewed-by: Daniel Almeida <[email protected]>