From 2573d7ed9a4924449a8d1824d901e6c9f11b4c06 Mon Sep 17 00:00:00 2001 From: bolshoytoster Date: Thu, 20 Aug 2026 18:59:12 +0100 Subject: [PATCH 1/3] Reduce bloat from smallvec! --- src/lib.rs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e6bc8c73..7b00d59b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2672,14 +2672,7 @@ macro_rules! smallvec { $crate::from_elem($elem, $n) }); ($($x:expr),+$(,)?) => ({ - const COUNT: usize = 0usize $(+ $crate::smallvec!(@one $x))+; - let mut vec = $crate::SmallVec::new(); - if COUNT <= vec.capacity() { - $(vec.push($x);)* - vec - } else { - $crate::SmallVec::from_vec($crate::alloc::vec![$($x,)+]) - } + $crate::SmallVec::from([$($x,)+]) }); } From b581ec0611f660fc7800af91db73de5381cbd991 Mon Sep 17 00:00:00 2001 From: bolshoytoster Date: Thu, 20 Aug 2026 19:35:31 +0100 Subject: [PATCH 2/3] Remove unused macro arm, and merge the empty arm --- src/lib.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 7b00d59b..cddf24e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2663,16 +2663,11 @@ impl core::iter::FromIterator for SmallVec { #[macro_export] macro_rules! smallvec { - // count helper: transform any expression into 1 - (@one $x:expr) => (1usize); - () => ( - $crate::SmallVec::new() - ); ($elem:expr; $n:expr) => ({ $crate::from_elem($elem, $n) }); - ($($x:expr),+$(,)?) => ({ - $crate::SmallVec::from([$($x,)+]) + ($($($x:expr),+$(,)?)?) => ({ + $crate::SmallVec::from([$($($x,)+)?]) }); } From a8ae0d65e39110750b8fc34465aa27882ddb8367 Mon Sep 17 00:00:00 2001 From: bolshoytoster Date: Thu, 20 Aug 2026 20:00:50 +0100 Subject: [PATCH 3/3] Avoid outputting trailing commas in macros --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index cddf24e8..50b1d98a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2667,7 +2667,7 @@ macro_rules! smallvec { $crate::from_elem($elem, $n) }); ($($($x:expr),+$(,)?)?) => ({ - $crate::SmallVec::from([$($($x,)+)?]) + $crate::SmallVec::from([$($($x),+)?]) }); } @@ -2680,7 +2680,7 @@ macro_rules! smallvec_inline { }); ($($x:expr),+ $(,)?) => ({ const N: usize = 0usize $(+ $crate::smallvec_inline!(@one $x))*; - $crate::SmallVec::<_, N>::from_buf([$($x,)*]) + $crate::SmallVec::<_, N>::from_buf([$($x),*]) }); }