From 96659a502ff14df30dfeb4e50388e97ced9af547 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 1 Jun 2026 17:13:21 -0400 Subject: [PATCH] compiler/rust/smallvec: Implement FromIterator and From<[T; N]> Reviewed-by: Mel Henning Part-of: --- src/compiler/rust/smallvec.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/compiler/rust/smallvec.rs b/src/compiler/rust/smallvec.rs index 77c247f6267..82691b5a34a 100644 --- a/src/compiler/rust/smallvec.rs +++ b/src/compiler/rust/smallvec.rs @@ -138,3 +138,25 @@ impl From> for SmallVec { } } } + +impl From<[T; N]> for SmallVec { + fn from(i: [T; N]) -> SmallVec { + i.into_iter().collect() + } +} + +impl FromIterator for SmallVec { + fn from_iter(iter: I) -> Self + where + I: IntoIterator, + { + let mut iter = iter.into_iter(); + let Some(x) = iter.next() else { + return SmallVec::None; + }; + let Some(y) = iter.next() else { + return SmallVec::One(x); + }; + SmallVec::Many([x, y].into_iter().chain(iter).collect()) + } +}