Tracking lifetimes accross function traits

If the inference difficulties are actually coming from the new trait and implementations, perhaps the mitigating approaches taken in this thread will be of use to you. But note that in that thread as well, the poor inference of higher-ranked closures remained. There's an accepted RFC for a more ergonomic workaround for that, but it's not yet implemented stable.

(Edit: It is implemented (example), the tracking issue is just failing to track the issue.)