Comment by zidel
Rust handles this by automatically unlocking when the MutexGuard returned by lock() is dropped. The issue here is not that the mutex remains locked, but rather that the data protected by the mutex might be inconsistent (and the mutex unlocked) after a panic.
Ah, so my understanding of the problem was wrong.
Thanks for the clarification.