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

From: Paolo Bonzini

Date: Fri Oct 31 2025 - 05:38:38 EST


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.

Paolo

Of course, that doesn't mean we can't change it. Condvar could be
updated to use ownership in that way, and doing say may be a good
idea.