error[E0599]: no method named `hello` found for type parameter `impl Foo` in the current scope --> $DIR/impl-trait-with-missing-trait-bounds-in-arg.rs:15:9 | LL | fn test(foo: impl Foo) { | -------- method `hello` not found for this type parameter LL | foo.hello(); | ^^^^^ method not found in `impl Foo` | = help: items from traits can only be used if the type parameter is bounded by the trait help: the following trait defines an item `hello`, perhaps you need to restrict type parameter `impl Foo` with it: | LL | fn test(foo: impl Foo + Bar) { | +++++ error[E0599]: no method named `method` found for type parameter `impl Fn() -> dyn std::fmt::Debug` in the current scope --> $DIR/impl-trait-with-missing-trait-bounds-in-arg.rs:26:7 | LL | fn test2(f: impl Fn() -> dyn std::fmt::Debug) { | -------------------------------- method `method` not found for this type parameter LL | f.method(); | ^^^^^^ method not found in `impl Fn() -> dyn std::fmt::Debug` | = help: items from traits can only be used if the type parameter is bounded by the trait help: the following trait defines an item `method`, perhaps you need to restrict type parameter `impl Fn() -> dyn std::fmt::Debug` with it: | LL | fn test2(f: impl Fn() -> (dyn std::fmt::Debug) + Trait) { | + +++++++++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0599`.