The numbers don't lie! You may want to restructure this slightly with fewer options:

```rust
    pub fn find_path<'a>(&'a self, keys: &[&~str]) -> Option<&'a Json>{
        // early return so we don't keep searching
        let mut target = self;
        for key in keys.iter() {
            match target.find(*key) {
                Some(t) => { target = t; }
                None => return None,
            }
        }
        Some(target)
    }
```