Looks like the author missed my main complaint about Rust mutexes, which is that the lock method returns a Result. There should be a try_unlock method for when someone actually wants to handle the rather obscure failure case, and the name lock should be used for a method that panics on failure but returns a value that doesn’t need to be unwrapped first. I see the current arrangement as being about as sensible as having array subscripting return a Result to handle the case of a failed bounds check.
Looks like the author missed my main complaint about Rust mutexes, which is that the
lock
method returns aResult
. There should be atry_unlock
method for when someone actually wants to handle the rather obscure failure case, and the namelock
should be used for a method that panics on failure but returns a value that doesn’t need to be unwrapped first. I see the current arrangement as being about as sensible as having array subscripting return aResult
to handle the case of a failed bounds check.Just use the Mutex from the parking_lot crate.
If lock-ergonomicsⓒ is as relevant to you as indexing, you’re doing it wrong.
I would rather take indexing returning
Result
s than the other way around.One can always wrap any code in
{||{ //.. }}()
and use question marks liberally anyway (I call them stable try blocks 😉).