mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 15:01:51 +00:00
Rollup merge of #68070 - GuillaumeGomez:clean-up-e0185, r=Dylan-DPC
clean up E0185 explanation r? @Dylan-DPC
This commit is contained in:
commit
34231d6c0b
@ -2,7 +2,7 @@ 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
|
implementation of the trait declared the same function to be a method (i.e., to
|
||||||
take a `self` parameter).
|
take a `self` parameter).
|
||||||
|
|
||||||
Here's an example of this error:
|
Erroneous code example:
|
||||||
|
|
||||||
```compile_fail,E0185
|
```compile_fail,E0185
|
||||||
trait Foo {
|
trait Foo {
|
||||||
@ -17,3 +17,19 @@ impl Foo for Bar {
|
|||||||
fn foo(&self) {}
|
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!
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user