From 230bd464eaa689e1febec87cde34d1997e5490ae Mon Sep 17 00:00:00 2001 From: Mac L Date: Fri, 20 Mar 2026 03:30:18 +1100 Subject: [PATCH] Delegate to Vec --- src/variable_list.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/variable_list.rs b/src/variable_list.rs index 6443545..b8dab0e 100644 --- a/src/variable_list.rs +++ b/src/variable_list.rs @@ -391,15 +391,17 @@ where impl<'a, T: arbitrary::Arbitrary<'a>, N: 'static + Unsigned> arbitrary::Arbitrary<'a> for VariableList { + /// Delegate to `Vec`'s `Arbitrary` implementation which prevents a single list + /// from being too large. fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result { - let max_size = N::to_usize(); - let size = u.arbitrary_len::()?.min(max_size); - let mut vec: Vec = Vec::with_capacity(size); - for _ in 0..size { - vec.push(::arbitrary(u)?); - } + let mut vec = >::arbitrary(u)?; + vec.truncate(N::to_usize()); Self::new(vec).map_err(|_| arbitrary::Error::IncorrectFormat) } + + fn size_hint(depth: usize) -> (usize, Option) { + >::size_hint(depth) + } } #[cfg(test)]