diff options
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0201.md')
-rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0201.md | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0201.md b/compiler/rustc_error_codes/src/error_codes/E0201.md new file mode 100644 index 000000000..0e1a7b7b7 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0201.md @@ -0,0 +1,45 @@ +Two associated items (like methods, associated types, associated functions, +etc.) were defined with the same identifier. + +Erroneous code example: + +```compile_fail,E0201 +struct Foo(u8); + +impl Foo { + fn bar(&self) -> bool { self.0 > 5 } + fn bar() {} // error: duplicate associated function +} + +trait Baz { + type Quux; + fn baz(&self) -> bool; +} + +impl Baz for Foo { + type Quux = u32; + + fn baz(&self) -> bool { true } + + // error: duplicate method + fn baz(&self) -> bool { self.0 > 5 } + + // error: duplicate associated type + type Quux = u32; +} +``` + +Note, however, that items with the same name are allowed for inherent `impl` +blocks that don't overlap: + +``` +struct Foo<T>(T); + +impl Foo<u8> { + fn bar(&self) -> bool { self.0 > 5 } +} + +impl Foo<bool> { + fn bar(&self) -> bool { self.0 } +} +``` |