diff --git a/src/lib.rs b/src/lib.rs index 5434d44f..18227293 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -930,16 +930,8 @@ impl SmallVec { #[inline] pub fn reserve(&mut self, additional: usize) { - // can't overflow since len <= capacity - if additional > self.capacity() - self.len() { - let new_capacity = self - .len() - .checked_add(additional) - .and_then(usize::checked_next_power_of_two) - .ok_or(SmallVecError::CapacityOverflow) - .unwrap_or_else(SmallVecError::handle); - self.grow(new_capacity); - } + self.try_reserve(additional) + .unwrap_or_else(SmallVecError::handle); } #[inline] @@ -958,15 +950,8 @@ impl SmallVec { #[inline] pub fn reserve_exact(&mut self, additional: usize) { - // can't overflow since len <= capacity - if additional > self.capacity() - self.len() { - let new_capacity = self - .len() - .checked_add(additional) - .ok_or(SmallVecError::CapacityOverflow) - .unwrap_or_else(SmallVecError::handle); - self.grow(new_capacity); - } + self.try_reserve_exact(additional) + .unwrap_or_else(SmallVecError::handle); } #[inline]