fn main() { let mut x: &[_] = &[1, 2, 3, 4]; let mut result = vec!(); loop { x = match *x { [1, n, 3, ref rest @ ..] => { result.push(n); rest } [n, ref rest @ ..] => { result.push(n); rest } [] => break } } assert_eq!(result, [2, 4]); }