Higher-Rank Trait Bounds use bound lifetime in another generic

You may also be interested in this post: Accepting an async closure + lifetimes = stumped - #8 by Yandros