From 960d610e7f33889a2577f5f17c26f0d5c82b30df Mon Sep 17 00:00:00 2001 From: nicoo Date: Fri, 6 Jan 2023 12:51:41 +0100 Subject: [PATCH] vec/raw: Simplify `RawVec::grow` (#392) --- src/vec/vec-raw.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/vec/vec-raw.md b/src/vec/vec-raw.md index 728feaa..0bca2da 100644 --- a/src/vec/vec-raw.md +++ b/src/vec/vec-raw.md @@ -28,18 +28,13 @@ impl RawVec { } fn grow(&mut self) { - let (new_cap, new_layout) = if self.cap == 0 { - (1, Layout::array::(1).unwrap()) - } else { - // This can't overflow because we ensure self.cap <= isize::MAX. - let new_cap = 2 * self.cap; - - // Layout::array checks that the number of bytes is <= usize::MAX, - // but this is redundant since old_layout.size() <= isize::MAX, - // so the `unwrap` should never fail. - let new_layout = Layout::array::(new_cap).unwrap(); - (new_cap, new_layout) - }; + // This can't overflow because we ensure self.cap <= isize::MAX. + let new_cap = if self.cap == 0 { 1 } else { 2 * self.cap }; + + // Layout::array checks that the number of bytes is <= usize::MAX, + // but this is redundant since old_layout.size() <= isize::MAX, + // so the `unwrap` should never fail. + let new_layout = Layout::array::(new_cap).unwrap(); // Ensure that the new allocation doesn't exceed `isize::MAX` bytes. assert!(new_layout.size() <= isize::MAX as usize, "Allocation too large");