|
1 |
| -#![feature(array_chunks, slice_as_chunks)] |
| 1 | +#![feature(is_sorted)] |
2 | 2 |
|
3 | 3 | fn main() {
|
4 |
| - let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5, 6]; |
5 |
| - |
6 |
| - const WINDOW_SIZE: usize = 3; |
7 |
| - |
8 |
| - let mut i = 0; |
9 |
| - let len = v.len(); |
10 |
| - while i < len { |
11 |
| - if i + WINDOW_SIZE >= len { |
12 |
| - break; |
13 |
| - } |
14 |
| - |
15 |
| - //let slice: &mut [i32; WINDOW_SIZE] = TryFrom::try_from(&mut v[i..i+WINDOW_SIZE]).unwrap(); |
16 |
| - let slice = &mut v[i..i+WINDOW_SIZE]; |
17 |
| - let ptr = slice.as_mut_ptr() as *mut [i32; WINDOW_SIZE]; |
18 |
| - let array: &mut [i32; WINDOW_SIZE] = unsafe { &mut *ptr }; |
19 |
| - //println!("{:?}", array); |
20 |
| - |
21 |
| - let sum = array.iter().sum::<i32>(); |
22 |
| - *array = [sum; WINDOW_SIZE]; |
23 |
| - |
24 |
| - i += WINDOW_SIZE; |
25 |
| - } |
26 |
| - |
27 |
| - //println!("{:?}", v); |
28 |
| - assert_eq!(v, &[3, 3, 3, 12, 12, 12, 6]); |
29 |
| - |
30 |
| - /*for a in v.array_chunks_mut() { |
31 |
| - let sum = a.iter().sum::<i32>(); |
32 |
| - *a = [sum; 3]; |
33 |
| - } |
34 |
| - assert_eq!(v, &[3, 3, 3, 12, 12, 12, 6]);*/ |
35 |
| - |
36 |
| - /*let v2: &mut [i32] = &mut [0, 1, 2, 3, 4, 5, 6]; |
37 |
| - v2.array_chunks_mut().for_each(|[a, b]| core::mem::swap(a, b)); |
38 |
| - assert_eq!(v2, &[1, 0, 3, 2, 5, 4, 6]);*/ |
| 4 | + let b: u16 = 42; |
| 5 | + assert_eq!(b, 42); |
| 6 | + let empty: [i32; 0] = []; |
| 7 | + |
| 8 | + assert!([1, 2, 2, 9].is_sorted()); |
| 9 | + assert!(![1, 3, 2].is_sorted()); |
| 10 | + assert!([42].is_sorted()); |
| 11 | + assert!(empty.is_sorted()); |
| 12 | + assert!(![0.0, 1.0, f32::NAN].is_sorted()); |
| 13 | + assert!([-2, -1, 0, 3].is_sorted()); |
| 14 | + assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs())); |
| 15 | + assert!(!["c", "bb", "aaa"].is_sorted()); |
| 16 | + assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len())); |
39 | 17 | }
|
0 commit comments