1
1
use crate :: Fragment ;
2
- use std :: cmp:: Ordering :: { self , * } ;
2
+ use core :: cmp:: Ordering :: { self , * } ;
3
3
4
4
pub fn in_place_sort_by < T , F > ( fragments : & mut [ Fragment < T > ] , mut compare : F )
5
5
where
@@ -21,13 +21,13 @@ where
21
21
while r < num_fragments - 1 {
22
22
let row_to_swap = get_row_to_swap ( fragments, & mut compare, r, c) ;
23
23
if let Some ( target_row) = row_to_swap {
24
- let pa = std :: ptr:: addr_of_mut!( fragments[ r] [ c] ) ;
25
- let pb = std :: ptr:: addr_of_mut!( fragments[ target_row] [ 0 ] ) ;
24
+ let pa = core :: ptr:: addr_of_mut!( fragments[ r] [ c] ) ;
25
+ let pb = core :: ptr:: addr_of_mut!( fragments[ target_row] [ 0 ] ) ;
26
26
// SAFETY: `pa` and `pb` have been created from safe mutable references and refer
27
27
// to elements in the slice and therefore are guaranteed to be valid and aligned.
28
28
// Note that accessing the elements behind `a` and `b` is checked and will
29
29
// panic when out of bounds.
30
- unsafe { std :: ptr:: swap ( pa, pb) } ;
30
+ unsafe { core :: ptr:: swap ( pa, pb) } ;
31
31
32
32
let fragment_right = & fragments[ target_row] [ 1 ..] ;
33
33
let value = & fragments[ target_row] [ 0 ] ;
@@ -114,11 +114,12 @@ where
114
114
mod tests {
115
115
use super :: * ;
116
116
use crate :: { Doubling , Growth , Linear , Recursive } ;
117
+ use alloc:: vec:: Vec ;
117
118
use test_case:: test_case;
118
119
119
120
#[ test]
120
121
fn insertion_position ( ) {
121
- let fragment: Fragment < u32 > = vec ! [ 4 , 7 , 9 , 13 , 16 , 17 , 23 ] . into ( ) ;
122
+ let fragment: Fragment < u32 > = alloc :: vec![ 4 , 7 , 9 , 13 , 16 , 17 , 23 ] . into ( ) ;
122
123
123
124
let mut c = |a : & u32 , b : & u32 | a. cmp ( b) ;
124
125
let mut pos = |val : & u32 | find_position_to_insert ( & fragment, & mut c, val) ;
@@ -162,15 +163,15 @@ mod tests {
162
163
fn insertion_position_with_ties ( ) {
163
164
let mut c = |a : & u32 , b : & u32 | a. cmp ( b) ;
164
165
165
- let fragment: Fragment < u32 > = vec ! [ 4 , 7 , 13 , 13 , 13 , 17 , 23 ] . into ( ) ;
166
+ let fragment: Fragment < u32 > = alloc :: vec![ 4 , 7 , 13 , 13 , 13 , 17 , 23 ] . into ( ) ;
166
167
let mut pos = |val : & u32 | find_position_to_insert ( & fragment, & mut c, val) ;
167
168
assert_eq ! ( pos( & 13 ) , Some ( 2 ) ) ;
168
169
169
- let fragment: Fragment < u32 > = vec ! [ 4 , 7 , 13 , 13 , 23 , 23 , 23 ] . into ( ) ;
170
+ let fragment: Fragment < u32 > = alloc :: vec![ 4 , 7 , 13 , 13 , 23 , 23 , 23 ] . into ( ) ;
170
171
let mut pos = |val : & u32 | find_position_to_insert ( & fragment, & mut c, val) ;
171
172
assert_eq ! ( pos( & 23 ) , Some ( 4 ) ) ;
172
173
173
- let fragment: Fragment < u32 > = vec ! [ 4 , 4 , 13 , 13 , 23 , 23 , 23 ] . into ( ) ;
174
+ let fragment: Fragment < u32 > = alloc :: vec![ 4 , 4 , 13 , 13 , 23 , 23 , 23 ] . into ( ) ;
174
175
let mut pos = |val : & u32 | find_position_to_insert ( & fragment, & mut c, val) ;
175
176
assert_eq ! ( pos( & 4 ) , None ) ;
176
177
}
@@ -179,8 +180,11 @@ mod tests {
179
180
fn sort_simple ( ) {
180
181
let mut c = |a : & u32 , b : & u32 | a. cmp ( b) ;
181
182
182
- let mut fragments: Vec < Fragment < u32 > > =
183
- vec ! [ vec![ 2 , 4 ] . into( ) , vec![ 0 , 5 , 6 ] . into( ) , vec![ 1 , 3 ] . into( ) ] ;
183
+ let mut fragments: Vec < Fragment < u32 > > = alloc:: vec![
184
+ alloc:: vec![ 2 , 4 ] . into( ) ,
185
+ alloc:: vec![ 0 , 5 , 6 ] . into( ) ,
186
+ alloc:: vec![ 1 , 3 ] . into( )
187
+ ] ;
184
188
185
189
in_place_sort_by ( & mut fragments, & mut c) ;
186
190
@@ -194,7 +198,7 @@ mod tests {
194
198
let mut c = |a : & i32 , b : & i32 | a. cmp ( b) ;
195
199
196
200
let num_fragments = 10 ;
197
- let mut fragments: Vec < Fragment < _ > > = vec ! [ ] ;
201
+ let mut fragments: Vec < Fragment < _ > > = alloc :: vec![ ] ;
198
202
199
203
let mut len = 0 ;
200
204
for _ in 0 ..num_fragments {
0 commit comments