@@ -571,6 +571,8 @@ macro_rules! arbitrary_tuple {
571
571
}
572
572
arbitrary_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 ) ;
573
573
574
+ // Helper to safely create arrays since the standard library doesn't
575
+ // provide one yet. Shouldn't be necessary in the future.
574
576
struct ArrayGuard < T , const N : usize > {
575
577
dst : * mut T ,
576
578
initialized : usize ,
@@ -591,10 +593,9 @@ where
591
593
F : FnMut ( usize ) -> T ,
592
594
{
593
595
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 } ;
598
599
unsafe {
599
600
for ( idx, value_ptr) in ( & mut * array. as_mut_ptr ( ) ) . iter_mut ( ) . enumerate ( ) {
600
601
core:: ptr:: write ( value_ptr, cb ( idx) ) ;
@@ -610,10 +611,9 @@ where
610
611
F : FnMut ( usize ) -> Result < T > ,
611
612
{
612
613
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 } ;
617
617
unsafe {
618
618
for ( idx, value_ptr) in ( & mut * array. as_mut_ptr ( ) ) . iter_mut ( ) . enumerate ( ) {
619
619
core:: ptr:: write ( value_ptr, cb ( idx) ?) ;
0 commit comments