rust/tests/ui/traits/fn-trait-cast-diagnostic.rs
kadmin 2de9d679ad Add note when FnPtr vs. FnDef impl trait
I encountered an instance where an `FnPtr` implemented a trait, but I was passing an `FnDef`. To
the end user, there is really no way to differentiate each of them, but it is necessary to cast
to the generic function in order to compile. It is thus useful to suggest `as` in the help note,
(even if the Fn output implements the trait).
2023-01-14 10:37:56 +00:00

27 lines
553 B
Rust

// There are two different instances to check that even if
// the trait is implemented for the output of a function,
// it will still be displayed if the function itself implements a trait.
trait Foo {}
impl Foo for fn() -> bool {}
impl Foo for bool {}
fn example() -> bool {
true
}
trait NoOtherFoo {}
impl NoOtherFoo for fn() -> bool {}
fn do_on_foo(v: impl Foo) {}
fn do_on_single_foo(v: impl NoOtherFoo) {}
fn main() {
do_on_foo(example);
//~^ ERROR the trait bound
do_on_single_foo(example);
//~^ ERROR the trait bound
}