@@ -31,6 +31,63 @@ fn main_0() -> i32 {
3131 } ) ) ;
3232 assert ! ( ( * it. borrow( ) ) != RandomAccessIterator :: Vec ( ( v. as_pointer( ) as Ptr <i32 >) . to_end( ) ) ) ;
3333 assert ! ( ( ( ( * it. borrow( ) ) . iter_deref( ) . read( ) ) == 7 ) ) ;
34+ {
35+ let count = Rc :: new ( RefCell :: new ( RandomAccessIterator :: Vec (
36+ ( v. as_pointer ( ) as Ptr < i32 > ) . to_end ( ) ,
37+ ) ) )
38+ . as_pointer ( )
39+ . get_offset ( )
40+ - Rc :: new ( RefCell :: new ( RandomAccessIterator :: Vec (
41+ ( v. as_pointer ( ) as Ptr < i32 > ) ,
42+ ) ) )
43+ . as_pointer ( )
44+ . get_offset ( ) ;
45+ let random = std:: hash:: RandomState :: new ( ) ;
46+ for i in ( 1 ..count) . rev ( ) {
47+ let j = std:: hash:: BuildHasher :: hash_one ( & random, i) as usize % ( i + 1 ) ;
48+ let x = Rc :: new ( RefCell :: new ( RandomAccessIterator :: Vec (
49+ ( v. as_pointer ( ) as Ptr < i32 > ) ,
50+ ) ) )
51+ . as_pointer ( )
52+ . offset ( i) ;
53+ let y = Rc :: new ( RefCell :: new ( RandomAccessIterator :: Vec (
54+ ( v. as_pointer ( ) as Ptr < i32 > ) ,
55+ ) ) )
56+ . as_pointer ( )
57+ . offset ( j) ;
58+ let tmp = x. read ( ) ;
59+ x. write ( y. read ( ) ) ;
60+ y. write ( tmp) ;
61+ }
62+ } ;
63+ {
64+ let __n = RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) . to_end ( ) )
65+ . iter_distance ( & RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) ) ) ;
66+ let mut __order: Vec < isize > = ( 0 ..__n) . collect ( ) ;
67+ __order. sort_by ( |& __x, & __y| {
68+ RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) )
69+ . iter_at ( __x)
70+ . with ( |__a| {
71+ RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) )
72+ . iter_at ( __y)
73+ . with ( |__b| __a. cmp ( __b) )
74+ } )
75+ } ) ;
76+ let __values: Vec < _ > = __order
77+ . iter ( )
78+ . map ( |& __i| {
79+ RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) )
80+ . iter_at ( __i)
81+ . read ( )
82+ } )
83+ . collect ( ) ;
84+ for ( __i, __v) in ( 0 ..__n) . zip ( __values) {
85+ RandomAccessIterator :: Vec ( ( v. as_pointer ( ) as Ptr < i32 > ) )
86+ . iter_at ( __i)
87+ . write ( __v) ;
88+ }
89+ } ;
90+ assert ! ( ( { ( * v. borrow( ) ) [ 0_usize ] } == 4 ) && ( { ( * v. borrow( ) ) [ 1_usize ] } == 7 ) ) ;
3491 return 0 ;
3592}
3693pub fn __cpp2rust_init_globals ( ) { }
0 commit comments