diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-01-12 17:50:14 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-01-12 17:50:14 +0100 |
| commit | 34186ef642f1c48e6a27693ad16a3e0fcfd0fddc (patch) | |
| tree | 244028c323f5ae58cc84e5fabacb1ca5f70a4e87 /src/librustc_error_codes/error_codes | |
| parent | ee84c30aee06a004b8d8f8d24000351e9d1cb4bf (diff) | |
| download | rust-34186ef642f1c48e6a27693ad16a3e0fcfd0fddc.tar.gz rust-34186ef642f1c48e6a27693ad16a3e0fcfd0fddc.zip | |
Clean up E0186 explanation
Diffstat (limited to 'src/librustc_error_codes/error_codes')
| -rw-r--r-- | src/librustc_error_codes/error_codes/E0186.md | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/librustc_error_codes/error_codes/E0186.md b/src/librustc_error_codes/error_codes/E0186.md index 9135d5c1d5e..7db1e843323 100644 --- a/src/librustc_error_codes/error_codes/E0186.md +++ b/src/librustc_error_codes/error_codes/E0186.md @@ -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! +} +``` |
