You're always returning something in this block. What you have here is fine, but personally I'd recommend taking advantage of Rust's semantics to make this a bit clearer, as in

```rust
return match self.parse_value() {
    Ok(v) => v,
    Err(e) => {
        self.expect = ExpectNothing;
        EndWithError(e)
   }
}
```