@@ -200,18 +200,24 @@ where
200
200
let ( lower_index, upper_index) =
201
201
self . dual_partition_mut ( sample[ lower_index] , sample[ upper_index] ) ;
202
202
if i < lower_index {
203
- self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( ..lower_index) )
204
- . get_from_sorted_mut ( i)
203
+ maybe_grow ( RED_ZONE , STACK_SIZE , || {
204
+ self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( ..lower_index) )
205
+ . get_from_sorted_mut ( i)
206
+ } )
205
207
} else if i == lower_index {
206
208
self [ i] . clone ( )
207
209
} else if i < upper_index {
208
- self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( lower_index + 1 ..upper_index) )
209
- . get_from_sorted_mut ( i - ( lower_index + 1 ) )
210
+ maybe_grow ( RED_ZONE , STACK_SIZE , || {
211
+ self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( lower_index + 1 ..upper_index) )
212
+ . get_from_sorted_mut ( i - ( lower_index + 1 ) )
213
+ } )
210
214
} else if i == upper_index {
211
215
self [ i] . clone ( )
212
216
} else {
213
- self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( upper_index + 1 ..) )
214
- . get_from_sorted_mut ( i - ( upper_index + 1 ) )
217
+ maybe_grow ( RED_ZONE , STACK_SIZE , || {
218
+ self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( upper_index + 1 ..) )
219
+ . get_from_sorted_mut ( i - ( upper_index + 1 ) )
220
+ } )
215
221
}
216
222
} else {
217
223
let pivot_index = if sought_rank <= 0.5 {
@@ -221,13 +227,17 @@ where
221
227
} ;
222
228
let pivot_index = self . partition_mut ( sample[ pivot_index] ) ;
223
229
if i < pivot_index {
224
- self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( ..pivot_index) )
225
- . get_from_sorted_mut ( i)
230
+ maybe_grow ( RED_ZONE , STACK_SIZE , || {
231
+ self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( ..pivot_index) )
232
+ . get_from_sorted_mut ( i)
233
+ } )
226
234
} else if i == pivot_index {
227
235
self [ i] . clone ( )
228
236
} else {
229
- self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( pivot_index + 1 ..) )
230
- . get_from_sorted_mut ( i - ( pivot_index + 1 ) )
237
+ maybe_grow ( RED_ZONE , STACK_SIZE , || {
238
+ self . slice_axis_mut ( Axis ( 0 ) , Slice :: from ( pivot_index + 1 ..) )
239
+ . get_from_sorted_mut ( i - ( pivot_index + 1 ) )
240
+ } )
231
241
}
232
242
}
233
243
}
@@ -363,9 +373,7 @@ where
363
373
// Since `!indexes.is_empty()` and indexes must be in-bounds, `array` must
364
374
// be non-empty.
365
375
let mut values = vec ! [ array[ 0 ] . clone( ) ; indexes. len( ) ] ;
366
- maybe_grow ( RED_ZONE , STACK_SIZE , || {
367
- _get_many_from_sorted_mut_unchecked ( array. view_mut ( ) , & mut indexes. to_owned ( ) , & mut values) ;
368
- } ) ;
376
+ _get_many_from_sorted_mut_unchecked ( array. view_mut ( ) , & mut indexes. to_owned ( ) , & mut values) ;
369
377
370
378
// We convert the vector to a more search-friendly `IndexMap`.
371
379
indexes. iter ( ) . cloned ( ) . zip ( values. into_iter ( ) ) . collect ( )
0 commit comments