From 51d7842fe16ba070f63bbab925161ea352970759 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Sun, 5 Feb 2023 19:20:16 +0100 Subject: Support arrays --- lib/src/lib.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/src') diff --git a/lib/src/lib.rs b/lib/src/lib.rs index e954eb4..ed76cba 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -82,6 +82,23 @@ impl GenerateRandom for Option { } } +impl GenerateRandom for [T; N] { + fn generate_random(rng: &mut R) -> Self { + use core::mem::MaybeUninit; + + let mut arr: [MaybeUninit; N] = unsafe { MaybeUninit::uninit().assume_init() }; + + for elem in arr.iter_mut() { + *elem = MaybeUninit::new(T::generate_random(rng)); + } + + let ret = unsafe { std::mem::transmute_copy(&arr) }; + std::mem::forget(arr); + + ret + } +} + macro_rules! impl_generate_random_tuple { ( $t0:ident $( $t:ident )* ) => { impl< $t0, $( $t, )* > GenerateRandom for ( $t0, $( $t, )* ) -- cgit v1.2.3