Does this compile?

        match self.find_mut(&k) {
            Some(val) => {
                found(&k, val, a);
                return val
            }
            None => ()
        }
        let v = not_found(&k, a);
        self.data.push((k,v));
        match self.data.mut_rev_iter().next() {
            Some(&(_, ref mut val)) => val,
            None => unreachable!(),
        }