Re: [PATCH v4] rust: lock: Export Guard::do_unlocked()

From: Alice Ryhl

Date: Fri Oct 31 2025 - 06:24:40 EST


On Fri, Oct 31, 2025 at 10:38:32AM +0100, Paolo Bonzini wrote:
> On 10/31/25 10:31, Alice Ryhl wrote:
> > I do agree that this behavior has a lot of potential to surprise
> > users, but I don't think it's incorrect per se. It was done
> > intentionally for Condvar, and it's not unsound. Just surprising.
>
> Yes, I agree that it is not unsound.`
>
> For conditional variables, wait() is clearly going to release the mutex to
> wait for someone else so the surprise factor is much less. Having it return
> a new guard would be closer to std::sync::Condvar::wait, but it'd add churn
> and I'm not sure how much you all care about consistency with std. std has
> the extra constraint of poisoned locks so it doesn't really have a choice.

I mean, it's not that much different.

my_method(&mut guard);

might still call Condvar::wait internally, so it can release the lock
today.

Alice