Enable iteration of key/val pairs in expirable LRU #178
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.
There is currently no way to iterate over key/val pairs in the cache. Can't combine the outputs of Keys() and Values() since new entries could have been added or old entries expire between the two calls. Only other option would be to call Keys() and Peek(...) every key, but that is not very efficient.
Given that the K/V Entries struct is internal only, I propose adding a Range(...) function that will call a function on each K/V pair in the cache. This way the lock only needs to be acquired once to make a list of current unexpired entries (similar to how the Keys() and Values() functions work), and then the callback is free to make modifications to the cache as it iterates.