//! returns: 0 fn id(n: u32) -> u32 { return n; } @default unsafe fn main() -> i32 { let xs: [u8; 5] = [10, 20, 30, 40, 50]; let slice: *[u8] = &xs[..]; let start = id(1); let end = id(4); let mid = &slice[start..end]; assert mid.len == 3; assert mid[0] == 20; assert mid[1] == 30; assert mid[2] == 40; let suffixStart = id(2); let suffix = &slice[suffixStart..]; assert suffix.len == 3; assert suffix[0] == 30; assert suffix[1] == 40; assert suffix[2] == 50; let prefixEnd = id(3); let prefix = &slice[..prefixEnd]; assert prefix.len == 3; assert prefix[0] == 10; assert prefix[1] == 20; assert prefix[2] == 30; let emptyStart = id(slice.len); let emptyEnd = id(slice.len); let empty = &slice[emptyStart..emptyEnd]; assert empty.len == 0; return 0; }