Clean up E0186 explanation

This commit is contained in:
Guillaume Gomez 2020-01-12 17:50:14 +01:00
parent ee84c30aee
commit 34186ef642

View file

@ -2,7 +2,7 @@ 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.
Here's an example of this error:
Erroneous code example:
```compile_fail,E0186
trait Foo {
@ -17,3 +17,19 @@ impl Foo for Bar {
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!
}
```