I don’t really understand the point of declaring the lifetimes between <>. Lifetimes already appears on the function signature (on its parameters or returned value), or in the declaration of the fields of a struct.
Unlike a template, it’s already clear in the signature that it’s a lifetime because of the quote notation.
It’s possible for the lifetime to be declared as part of a parent struct/scope/impl. Just as with generic T’s, the syntax is to distinguish declaring a new generic lifetime, and using an old one form the parent scope.