Why is `impl Foo` and `trait Bar` going on the func stack?