This would be exactly what we need, but is currently rather hard to use. Should be fine once [this issue in rust-lang](https://github.com/rust-lang/rust/issues/15311) is figured out.