Clean up E0186 explanation
This commit is contained in:
parent
ee84c30aee
commit
34186ef642
1 changed files with 17 additions and 1 deletions
|
@ -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!
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Add table
Reference in a new issue