Ah hah, this must be why you made it owned. You can rewrite this as instead just grabbing a reference to the first element, and then after you test it, you can re-slice `expected_result`.

Also, incidentally, you don't need the separate `expected_result` variable. Besides the fact that you could just re-use the name (as in `let mut expected = expected`), you can also simply declare `mut` in the function signature.

```rust
fn assert_stream_equal(src: &str, mut expected: &[(JsonEvent, &[StackNode])]) {
    let mut parser = StreamingParser::new(src.chars());
    loop {
        let evt = match parser.next() {
            Some(e) => e,
            None => break
        };
        let (ref expected_evt, ref expected_stack) = expected_result[0];
        expected = expected.slice_from(1);
        assert_eq!((evt, parser.stack()), (expected_evt, expected_stack));
    }
}
```