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