impl<F: Fn(A)> Foo for F {}
Lets try answering this using the nomicon linked above:
For
impl
headers, all types are input.
Each elided lifetime in input position becomes a distinct lifetime parameter.
So, the elided lifetime becomes distinct. But the rest of the page only talks about resolving elided output lifetimes, which is not relevant here.
The HRTB article is more useful however, and points us to the answer:
impl<F> Foo for F
where
for<'a> F: Fn(A<'a>),
{}
Thus, the lifetime is not an existential as implied by the error message (on nightly):
= note: ...but it actually implements
FnOnce<(A<'2>,)>
, for some specific lifetime'2
(Perhaps what is omitted here is: for<'2>
)