Remove unnecessary check in VecDeque::grow

All callers already check that the buffer is full before calling
`grow()`. This is where it makes the most sense, since `grow()` is
`inline(never)` and we don't want to pay for a function call just for
that check.
It could also be argued that it would be correct to call `grow()` even
if the buffer wasn't full yet.
This change breaks no code since `grow()` is not `pub`.
This commit is contained in:
Cédric Barreteau 2021-11-28 17:59:17 -05:00
parent 6db0a0e9a4
commit 29f5c98a17

View File

@ -2179,19 +2179,21 @@ impl<T, A: Allocator> VecDeque<T, A> {
}
}
// Double the buffer size. This method is inline(never), so we expect it to only
// be called in cold paths.
// This may panic or abort
#[inline(never)]
fn grow(&mut self) {
if self.is_full() {
let old_cap = self.cap();
// Double the buffer size.
self.buf.reserve_exact(old_cap, old_cap);
assert!(self.cap() == old_cap * 2);
unsafe {
self.handle_capacity_increase(old_cap);
}
debug_assert!(!self.is_full());
// Extend or possibly remove this assertion when valid use-cases for growing the
// buffer without it being full emerge
debug_assert!(self.is_full());
let old_cap = self.cap();
self.buf.reserve_exact(old_cap, old_cap);
assert!(self.cap() == old_cap * 2);
unsafe {
self.handle_capacity_increase(old_cap);
}
debug_assert!(!self.is_full());
}
/// Modifies the `VecDeque` in-place so that `len()` is equal to `new_len`,