I have the exact same question as a 3 year old reddit thread. It has a legitimate answer, but I wanted to ask if anything has changed since then:
I started trying to add a lifetime to my trait as suggested in the post. It ended up proliferating the lifetime to places I’d rather not have to maintain them, so I thought I’d see if anything has changed.
I’m guessing any changes here would depend on generic associated types. My designs have brought me up against a lack of GATs a few times now (especially with iteration). This suggests that I have brought some design baggage (my history is largely Python) that is causing to architect solutions or patterns that aren’t suitable to Rust. Perhaps it’s just too many layers of abstraction?