Yes, that's a product of the fact that the Rust syntax for dynamic dispatch (aka "trait objects") is to use just the name of the trait in a context where a type is expected, such as in &Trait. Again dyn trait will hopefully fix this someday, if people can agree on that breaking change. In the meantime, the compiler warning could be improved in isolation.
This is exactly my understanding of it.
Exactly, impl Trait in argument and result position are not implemented in the same way, which is why impl Trait in argument position was not part of the original proposal. From my understanding, it's just that people thought it would have nicer ergonomics to be able to stick with a single syntax for "I want something that implements a trait" when they want to.