| An associated function for a trait was defined to be static, but an | |
| implementation of the trait declared the same function to be a method (i.e., to | |
| take a `self` parameter). | |
| Erroneous code example: | |
| ```compile_fail,E0185 | |
| trait Foo { | |
| fn foo(); | |
| } | |
| struct Bar; | |
| impl Foo for Bar { | |
| // error, method `foo` has a `&self` declaration in the impl, but not in | |
| // the trait | |
| fn foo(&self) {} | |
| } | |
| ``` | |
| When a type implements a trait's associated function, it has to use the same | |
| signature. So in this case, since `Foo::foo` does not take any argument and | |
| does not return anything, its implementation on `Bar` should be the same: | |
| ``` | |
| trait Foo { | |
| fn foo(); | |
| } | |
| struct Bar; | |
| impl Foo for Bar { | |
| fn foo() {} // ok! | |
| } | |
| ``` |