This code
trait Foo {
fn foo(&mut self, x: i32, y: i32) -> i32;
}
impl Foo for i32 {
fn foo(
&mut self,
x: i32
) {
}
}
shows the error
error[E0050]: method `foo` has 2 parameters but the declaration in trait `Foo::foo` has 3
--> src/lib.rs:8:12
|
2 | fn foo(&mut self, x: i32, y: i32) -> i32;
| --- trait requires 3 parameters
...
8 | x: i32
| ^^^ expected 3 parameters, found 2
error: aborting due to previous error
It is rather odd that it points at the type of the last parameter. In particular when there is just one parameter per line, this span is not helpful.
The span should probably encompass all parameters.