Add MappedArcMutexGuard to mirror MappedMutexGuard #457
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a new type,
MappedArcMutexGuard
, that mirrors the API ofMappedMutexGuard
but with an ownedArc<>
reference to the underlying mutex while locked.I didn't find any tests covering
MappedMutexGuard
, so I didn't change the status quo. Instead, I copied the exact same implementation as forMappedMutexGuard
but with lifetimes removed and&'a R
references to the raw mutex replaced withArc<Mutex<T, R>>
. I believe this should make the new type at least as sound as the previousMappedMutexGuard
.Unfortunately, since we only have an
Arc
aroundMutex
, but not the raw mutex typeR
, we cannot type erase the wrapped mutex and need to retain the original typeT
inMappedArcMutexGuard<R, T, U>
(as opposed toMappedArcMutexGuard<R, U>
).The name was chosen based on the existing pattern of
MappedFairMutexGuard
to arrive atMappedArcMutexGuard
(as opposed to e.g.ArcMappedMutexGuard
or whatever).