@@ -571,6 +571,8 @@ macro_rules! arbitrary_tuple {
571571}
572572arbitrary_tuple ! ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) ;
573573
574+ // Helper to safely create arrays since the standard library doesn't
575+ // provide one yet. Shouldn't be necessary in the future.
574576struct ArrayGuard < T , const N : usize > {
575577 dst : * mut T ,
576578 initialized : usize ,
@@ -591,10 +593,9 @@ where
591593 F : FnMut ( usize ) -> T ,
592594{
593595 let mut array: mem:: MaybeUninit < [ T ; N ] > = mem:: MaybeUninit :: uninit ( ) ;
594- let mut guard: ArrayGuard < T , N > = ArrayGuard {
595- dst : array. as_mut_ptr ( ) as _ ,
596- initialized : 0 ,
597- } ;
596+ let array_ptr = array. as_mut_ptr ( ) ;
597+ let dst = array_ptr as _ ;
598+ let mut guard: ArrayGuard < T , N > = ArrayGuard { dst, initialized : 0 } ;
598599 unsafe {
599600 for ( idx, value_ptr) in ( & mut * array. as_mut_ptr ( ) ) . iter_mut ( ) . enumerate ( ) {
600601 core:: ptr:: write ( value_ptr, cb ( idx) ) ;
@@ -610,10 +611,9 @@ where
610611 F : FnMut ( usize ) -> Result < T > ,
611612{
612613 let mut array: mem:: MaybeUninit < [ T ; N ] > = mem:: MaybeUninit :: uninit ( ) ;
613- let mut guard: ArrayGuard < T , N > = ArrayGuard {
614- dst : array. as_mut_ptr ( ) as _ ,
615- initialized : 0 ,
616- } ;
614+ let array_ptr = array. as_mut_ptr ( ) ;
615+ let dst = array_ptr as _ ;
616+ let mut guard: ArrayGuard < T , N > = ArrayGuard { dst, initialized : 0 } ;
617617 unsafe {
618618 for ( idx, value_ptr) in ( & mut * array. as_mut_ptr ( ) ) . iter_mut ( ) . enumerate ( ) {
619619 core:: ptr:: write ( value_ptr, cb ( idx) ?) ;
0 commit comments