Skip to content

Commit 882c8f9

Browse files
committed
Only grow entries if necessary, since we also round up capacity
1 parent 570e1b2 commit 882c8f9

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/map/core.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,10 @@ impl<K, V> IndexMapCore<K, V> {
196196
/// Reserve capacity for `additional` more key-value pairs.
197197
pub(crate) fn reserve(&mut self, additional: usize) {
198198
self.indices.reserve(additional, get_hash(&self.entries));
199-
self.reserve_entries(additional);
199+
// Only grow entries if necessary, since we also round up capacity.
200+
if additional > self.entries.capacity() - self.entries.len() {
201+
self.reserve_entries(additional);
202+
}
200203
}
201204

202205
/// Reserve entries capacity, rounded up to match the indices
@@ -222,7 +225,12 @@ impl<K, V> IndexMapCore<K, V> {
222225
self.indices
223226
.try_reserve(additional, get_hash(&self.entries))
224227
.map_err(TryReserveError::from_hashbrown)?;
225-
self.try_reserve_entries(additional)
228+
// Only grow entries if necessary, since we also round up capacity.
229+
if additional > self.entries.capacity() - self.entries.len() {
230+
self.try_reserve_entries(additional)
231+
} else {
232+
Ok(())
233+
}
226234
}
227235

228236
/// Try to reserve entries capacity, rounded up to match the indices

0 commit comments

Comments
 (0)