If, for example, Mutexes are dynamically generated and stored somewhere, putting them in an Arc adds assurance that even if something mutates the storage (e.g a hashmap), sections of code that have already read and locked the mutex will still hold valid MutexGuards. This is not normally possible due to lifetime constraints
ref: https://docs.rs/lock_api/latest/lock_api/struct.Mutex.html#method.lock_arc
If, for example, Mutexes are dynamically generated and stored somewhere, putting them in an Arc adds assurance that even if something mutates the storage (e.g a hashmap), sections of code that have already read and locked the mutex will still hold valid MutexGuards. This is not normally possible due to lifetime constraints