//! returns: 0 /// Sum a slice and check its iteration index. fn sum(values: &[u32]) -> u32 { let mut result: u32 = 0; for value, index in values { assert value == values[index]; set result += value; } return result; } /// Compare array and slice lengths through every valid subrange. @default fn main() -> u32 { let data: [u32; 6] = [1, 2, 3, 4, 5, 6]; let empty: [u32; 0] = []; let mut total: u32 = 0; for value, index in data { assert value == index + 1; set total += value; } assert total == 21; for value in empty { assert false; } assert sum(&empty[..]) == 0; for start in 0..7 { for end in start..7 { let mut expected: u32 = 0; for index in start..end { set expected += index + 1; } assert sum(&data[start..end]) == expected; let all: 'whole = &data[..] in { assert sum(&all[start..end]) == expected; assert sum(&all[start..]) == 21 - start * (start + 1) / 2; assert sum(&all[..end]) == end * (end + 1) / 2; } } } return 0; }