From e20108f9c44ae190996e43ed9f338a3e782c0e12 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 11 Feb 2020 11:39:41 +0100 Subject: [PATCH] Clean up E0307 explanation --- src/librustc_error_codes/error_codes/E0307.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/librustc_error_codes/error_codes/E0307.md b/src/librustc_error_codes/error_codes/E0307.md index c628d176836f9..52707b93acc86 100644 --- a/src/librustc_error_codes/error_codes/E0307.md +++ b/src/librustc_error_codes/error_codes/E0307.md @@ -1,5 +1,19 @@ -This error indicates that the `self` parameter in a method has an invalid -"receiver type". +The `self` parameter in a method has an invalid "receiver type". + +Erroneous code example: + +```compile_fail,E0307 +struct Foo; +struct Bar; + +trait Trait { + fn foo(&self); +} + +impl Trait for Foo { + fn foo(self: &Bar) {} +} +``` Methods take a special first parameter, of which there are three variants: `self`, `&self`, and `&mut self`. These are syntactic sugar for @@ -36,7 +50,7 @@ impl Trait for Foo { } ``` -E0307 will be emitted by the compiler when using an invalid receiver type, +This error will be emitted by the compiler when using an invalid receiver type, like in the following example: ```compile_fail,E0307