История изменений
Исправление mersinvald, (текущая версия) :
Можно сделать структуру с MutexGuard, но ее лайфтайм должен быть зависим от того Mutex, который заимствуется при вызове lock.
Сейчас такой зависимости нет, и то что существует Arc не важно совершенно, потому что с точки зрения компилятора никакой связи между этим Arc и блокируемым мутексом не существует.
Поле _data таким образом не нужно, поскольку существование памяти будет гарантировано заимстсованием MutexGuard.
Исходная версия mersinvald, :
Можно сделать структуру с MutexGuard, но ее лайфтайм должен быть зависим от того Mutex, который заимствуется при вызове lock.
Сейчас такой зависимости нет, и то что существует Arc не важно совершенно, потому что с точки зрения компилятора никакой связи между этим Arc и блокируемым мутексом не существует.