diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-07 23:01:02 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-07 23:01:02 +0100 |
commit | 2a6f3ebd7b63817edc45a20c333028dc855de6da (patch) | |
tree | 90637eeee700231aef1a66563ca0ecc3535e854d /lib/src | |
parent | 4cf5da52e898ced32aeb3c441bcd386a8c2a925e (diff) | |
download | generate-random-2a6f3ebd7b63817edc45a20c333028dc855de6da.tar.xz |
Use core::array::from_fn for arrays
Diffstat (limited to 'lib/src')
-rw-r--r-- | lib/src/lib.rs | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 75acd57..c7e9285 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -84,18 +84,7 @@ impl<T: GenerateRandom> GenerateRandom for Option<T> { impl<T: GenerateRandom, const N: usize> GenerateRandom for [T; N] { fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self { - use core::mem::MaybeUninit; - - let mut arr: [MaybeUninit<T>; 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 + core::array::from_fn(|_| T::generate_random(rng)) } } |