Please consider the following usage case: play.
It would be great if impl Trait in argument position could be not only a syntactic sugar, but add something more useful to the language. If impl Trait would introduce hidden type parameter, send3_v1 and send3_v2 could be equivalent, but send3_v2 implementation is more straightforward to write:
foo.send3_v1::<Bar1, Bar2, Bar3>(
|r| r.bar1(),
|r| r.bar2(),
|r| r.bar3(),
);
foo.send3_v2::<Bar1, Bar2, Bar3, _, _, _>(
|r| r.bar1(),
|r| r.bar2(),
|r| r.bar3(),
);