The constructor is responsible for initialising the payload so that it's not possible to escape it.
Whether or not the mutex is locked.
Obtain exclusive access to the payload. The mutex is locked and when the returned Guard object's lifetime is over the mutex is unloked.
Provides @safe exclusive access (via a mutex) to a payload of type T. Allows to share mutable data across threads safely.