error[E0308]: mismatched types --> $DIR/shadowed-lplace-method-2.rs:22:17 | LL | *x.foo(0) = (); | --------- ^^ expected `X`, found `()` | | | expected due to the type of this binding | note: the `foo` call is resolved to the method in `X`, shadowing the method of the same name on trait `A` --> $DIR/shadowed-lplace-method-2.rs:22:8 | LL | *x.foo(0) = (); | ^^^ refers to `X::foo` help: you might have meant to call the other method; you can use the fully-qualified path to call it explicitly | LL | *<_ as A>::foo(&mut x, 0) = (); | ++++++++++++++++++ ~ help: try wrapping the expression in `X` | LL | *x.foo(0) = X { x: () }; | ++++++ + error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.