]> git.lizzy.rs Git - generate-random.git/commitdiff
Use core::array::from_fn for arrays
authorLizzy Fleckenstein <eliasfleckenstein@web.de>
Tue, 7 Feb 2023 22:01:02 +0000 (23:01 +0100)
committerLizzy Fleckenstein <eliasfleckenstein@web.de>
Tue, 7 Feb 2023 22:01:02 +0000 (23:01 +0100)
lib/src/lib.rs

index 75acd57a4af2635367f3bcc0f6c29ec6cfd105a1..c7e92851d86af12a7804ae1a2f4c42e4a9003640 100644 (file)
@@ -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))
     }
 }