From 9c31576546678395a1b1116a467bf0ce37c39e35 Mon Sep 17 00:00:00 2001 From: "Andrei E." Date: Sat, 11 Apr 2026 15:54:41 +0100 Subject: [PATCH 1/2] Optimize reserve for non-unique EcoVec --- src/vec.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vec.rs b/src/vec.rs index 130c6ab..b6f078b 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -462,7 +462,11 @@ impl EcoVec { if !self.is_unique() { let mut vec = Self::with_capacity(target); - vec.extend(self.iter().cloned()); + unsafe { + // Safety: + // Slice iterator implements ExactSizeIterator. + vec.extend_from_trusted(self.iter().cloned()); + } *self = vec; } else if target > capacity { unsafe { From a9d2444d57e1412ad413068d4b34c59bf8ca1574 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 25 May 2026 14:56:32 +0200 Subject: [PATCH 2/2] Adjust comment --- src/vec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vec.rs b/src/vec.rs index b6f078b..3190f90 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -464,7 +464,7 @@ impl EcoVec { let mut vec = Self::with_capacity(target); unsafe { // Safety: - // Slice iterator implements ExactSizeIterator. + // - Slice iterator implements `TrustedLen`. vec.extend_from_trusted(self.iter().cloned()); } *self = vec;