diff --git a/crates/ra_arena/src/map.rs b/crates/ra_arena/src/map.rs index 5e764113d29..0f33907c0ae 100644 --- a/crates/ra_arena/src/map.rs +++ b/crates/ra_arena/src/map.rs @@ -14,14 +14,8 @@ pub struct ArenaMap { impl ArenaMap, V> { pub fn insert(&mut self, id: Idx, t: V) { let idx = Self::to_idx(id); - if self.v.capacity() <= idx { - self.v.reserve(idx + 1 - self.v.capacity()); - } - if self.v.len() <= idx { - while self.v.len() <= idx { - self.v.push(None); - } - } + + self.v.resize_with((idx + 1).max(self.v.len()), || None); self.v[idx] = Some(t); }