@@ -8,8 +8,6 @@ use core::hash::{BuildHasher, Hash};
8
8
use core:: iter:: { FromIterator , FusedIterator } ;
9
9
use core:: marker:: PhantomData ;
10
10
use core:: mem;
11
- #[ cfg( feature = "nightly" ) ]
12
- use core:: mem:: MaybeUninit ;
13
11
use core:: ops:: Index ;
14
12
15
13
/// Default hasher for `HashMap`.
@@ -1149,16 +1147,7 @@ where
1149
1147
K : Borrow < Q > ,
1150
1148
Q : Hash + Eq ,
1151
1149
{
1152
- let mut pairs = self . get_each_inner_mut ( ks) ;
1153
- // TODO use `MaybeUninit::uninit_array` here instead once that's stable.
1154
- let mut out: [ MaybeUninit < Result < & ' _ mut V , UnavailableMutError > > ; N ] =
1155
- unsafe { MaybeUninit :: uninit ( ) . assume_init ( ) } ;
1156
- for i in 0 ..N {
1157
- out[ i] = MaybeUninit :: new (
1158
- mem:: replace ( & mut pairs[ i] , Err ( UnavailableMutError :: Absent ) ) . map ( |( _, v) | v) ,
1159
- ) ;
1160
- }
1161
- unsafe { MaybeUninit :: array_assume_init ( out) }
1150
+ self . get_each_inner_mut ( ks) . map ( |res| res. map ( |( _, v) | v) )
1162
1151
}
1163
1152
1164
1153
/// Attempts to get mutable references to `N` values in the map at once, with immutable
@@ -1208,17 +1197,8 @@ where
1208
1197
K : Borrow < Q > ,
1209
1198
Q : Hash + Eq ,
1210
1199
{
1211
- let mut pairs = self . get_each_inner_mut ( ks) ;
1212
- // TODO use `MaybeUninit::uninit_array` here instead once that's stable.
1213
- let mut out: [ MaybeUninit < Result < ( & ' _ K , & ' _ mut V ) , UnavailableMutError > > ; N ] =
1214
- unsafe { MaybeUninit :: uninit ( ) . assume_init ( ) } ;
1215
- for i in 0 ..N {
1216
- out[ i] = MaybeUninit :: new (
1217
- mem:: replace ( & mut pairs[ i] , Err ( UnavailableMutError :: Absent ) )
1218
- . map ( |( k, v) | ( & * k, v) ) ,
1219
- ) ;
1220
- }
1221
- unsafe { MaybeUninit :: array_assume_init ( out) }
1200
+ self . get_each_inner_mut ( ks)
1201
+ . map ( |res| res. map ( |( k, v) | ( & * k, v) ) )
1222
1202
}
1223
1203
1224
1204
#[ cfg( feature = "nightly" ) ]
0 commit comments