|  | fn empty_array() -> [u16; 0] { | 
|  | [] | 
|  | } | 
|  |  | 
|  | fn mini_array() -> [u16; 1] { | 
|  | [42] | 
|  | } | 
|  |  | 
|  | fn big_array() -> [u16; 5] { | 
|  | [5, 4, 3, 2, 1] | 
|  | } | 
|  |  | 
|  | fn array_array() -> [[u8; 2]; 3] { | 
|  | [[5, 4], [3, 2], [1, 0]] | 
|  | } | 
|  |  | 
|  | fn index_unsafe() -> i32 { | 
|  | let a = [0, 10, 20, 30]; | 
|  | unsafe { *a.get_unchecked(2) } | 
|  | } | 
|  |  | 
|  | fn index() -> i32 { | 
|  | let a = [0, 10, 20, 30]; | 
|  | a[2] | 
|  | } | 
|  |  | 
|  | fn array_repeat() -> [u8; 8] { | 
|  | [42; 8] | 
|  | } | 
|  |  | 
|  | fn slice_index() -> u8 { | 
|  | let arr: &[_] = &[101, 102, 103, 104, 105, 106]; | 
|  | arr[5] | 
|  | } | 
|  |  | 
|  | fn from() { | 
|  | const N: usize = 16; | 
|  | type Array = [u8; N]; | 
|  | let array: Array = [0; N]; | 
|  | let slice: &[u8] = &array[..]; | 
|  |  | 
|  | let result = <&Array>::try_from(slice); | 
|  | assert_eq!(&array, result.unwrap()); | 
|  |  | 
|  | let vec = Vec::from(array); | 
|  | assert_eq!(vec.len(), N); | 
|  | } | 
|  |  | 
|  | fn eq() { | 
|  | const N: usize = 16; | 
|  | type Array = [u8; N]; | 
|  | let array1: Array = [0; N]; | 
|  | let array2: Array = [0; N]; | 
|  | let array3: Array = [1; N]; | 
|  | assert_eq!(array1, array2); | 
|  | assert_ne!(array1, array3); | 
|  | } | 
|  |  | 
|  | fn debug() { | 
|  | let array = [0u8, 42, 13, 71]; | 
|  | println!("{:?}", array); | 
|  | } | 
|  |  | 
|  | fn huge_zst() { | 
|  | fn id<T>(x: T) -> T { | 
|  | x | 
|  | } | 
|  |  | 
|  | // A "huge" zero-sized array. Make sure we don't loop over it in any part of Miri. | 
|  | let val = [(); usize::MAX]; | 
|  | id(val); // make a copy | 
|  |  | 
|  | let val = [val; 2]; | 
|  | id(val); | 
|  |  | 
|  | // Also wrap it in a union (which, in particular, hits the logic for computing union padding). | 
|  | let _copy = std::mem::MaybeUninit::new(val); | 
|  | } | 
|  |  | 
|  | fn main() { | 
|  | assert_eq!(empty_array(), []); | 
|  | assert_eq!(index_unsafe(), 20); | 
|  | assert_eq!(index(), 20); | 
|  | assert_eq!(slice_index(), 106); | 
|  | assert_eq!(big_array(), [5, 4, 3, 2, 1]); | 
|  | assert_eq!(array_array(), [[5, 4], [3, 2], [1, 0]]); | 
|  | assert_eq!(array_repeat(), [42; 8]); | 
|  | assert_eq!(mini_array(), [42]); | 
|  | from(); | 
|  | eq(); | 
|  | debug(); | 
|  | huge_zst(); | 
|  | } |