keylock: make KeyLock generic and improve documentation #1661
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.
This PR improves the type safety of the
common/keylock
package by makingKeyLock
generic over the key type (previouslyinterface{}
), which also slightly improves performance*. For context, I was looking overcommon/keylock
to see whether we could replace the muted user lock in https://github.com/botlabs-gg/yagpdb/blob/master/moderation/mutelock.go with aKeyLock
, given the two pieces of code implement largely the same thing. (It turns out we can, but I'll defer this change to a later PR once the sqlboiler changes to themoderation
plugin are complete.)*
benchstat
results:(Though the benchmark is not at all representative of a typical use scenario, it does prove that the map access performance has improved as a result of no longer using
interface{}
keys. In any case, the main goal of this PR is type safety; better performance is a happy consequence.)