In the following code , 'a is an in-band lifetime , but how about 'b ? it is obvious that 'b is not a lifetime use , because there is no 'b declared in the scope.
The unstable in_band_lifetimes feature introduces a short-hand where you do not have to declare lifetimes. The way to write what you suggested on stable Rust is the following:
impl<'a, 'b> Tr<'a> for U<'b> {}
There's no real difference between 'a and 'b here.
Code like this is exactly why in_band_lifetimes should die in a fire.
That RFC combined several features that should have been evaluated independently. I'm glad we have '_ now, and that omitting lifetimes in types is now deprecated, but I see no good reason why implicitly declared lifetimes should be stabilized now.
Alright, so it's unstable. When asking a question, you should probably mention that you are using unstable features, not everyone does/expects that by default.
Then the FCP for the rest of in_band_lifetimes didn't make progress, so was cancelled since it wasn't going to happen for the edition.
And then basically nothing else has happened about in-band lifetimes for three years, other than discussions about lints (that would apply with or without the unstable feature).