Re: [PATCH 06/10] rust: xarray: simplify `Guard::load`
From: Tamir Duberstein
Date: Thu Jan 08 2026 - 08:08:50 EST
On Thu, Jan 8, 2026 at 4:38 AM Andreas Hindborg <a.hindborg@xxxxxxxxxx> wrote:
>
> Tamir Duberstein <tamird@xxxxxxxxx> writes:
>
> > On Wed, Jan 7, 2026 at 2:37 PM Andreas Hindborg <a.hindborg@xxxxxxxxxx> wrote:
> >>
> >> Tamir Duberstein <tamird@xxxxxxxxx> writes:
> >>
> >> > On Wed, Dec 3, 2025 at 5:27 PM Andreas Hindborg <a.hindborg@xxxxxxxxxx> wrote:
> >> >>
> >> >> Simplify the implementation by removing the closure-based API from
> >> >> `Guard::load` in favor of returning `Option<NonNull<c_void>>` directly.
> >> >
> >> > This is not sound. The returned pointer can now outlive the guard and
> >> > mutation through that pointer is trivial.
> >>
> >> I don't think this is unsound. If we returned a reference instead, it
> >> would be, but we are returning a raw pointer. Dereferencing the pointer
> >> is unsafe and requires proper safety comments.
> >
> > You may be right, strictly speaking, but it is most definitely a
> > footgun. This is a special pointer that requires more careful handling
> > than other raw pointers.
>
> I would disagree. Dereferencing any raw pointer requires the same
> checks, and knowing this one is valid and satisfies lifetime
> requirements is no different than others.
>
> It is also a private method that is only used in this particular impl
> block.
>
> At any rate, I'm fine with dropping the change. The reason I did it was
> because I had to double take when I read the previous code. I think the
> original code is has some unnecessary complexity with the closure.
Simplification is always welcome. The current shape of this code was
guided by the desire to avoid the footgun we're discussing here.
>
> Best regards,
> Andreas Hindborg
>
>
>