mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 01:04:03 +00:00
2de9d679ad
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).
27 lines
553 B
Rust
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
|
|
}
|