Add more removal methods to OccupiedEntry
#1179
Merged
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.
serde_json::Map
has several methods for removing an entry:.remove(key)
.swap_remove(key)
(with preserve_order).shift_remove(key)
(with preserve_order).remove_entry(key)
.swap_remove_entry(key)
(with preserve_order).shift_remove_entry(key)
(with preserve_order)But poor
serde_json::map::OccupiedEntry
only has.remove()
.This means we can't easily/efficiently get the owned key from an
OccupiedEntry
- we have to either borrow and clone it, or call.remove_entry(key)
on the original map, which will re-hash the key. Neither of these are catastrophic, but it's extra work we can avoid, since the underlyingOccupiedEntry
for bothBTreeMap
andIndexMap
have aremove_entry
method.Similarly, with preserve_order enabled, we can't easily remove the entry without messing up the order of later entries, since
OccupiedEntry::remove()
usesswap_remove
rather thanshift_remove
.Hence, this PR adds the five missing removal methods to
serde_json::map::OccupiedEntry