| error[E0053]: method `bar` has an incompatible type for trait |
| --> $DIR/specialization-broken.rs:15:22 |
| | |
| LL | default impl<U> Foo for U |
| | - found this type parameter |
| ... |
| LL | fn bar(&self) -> U { |
| | ^ expected associated type, found type parameter `U` |
| | |
| note: type in trait |
| --> $DIR/specialization-broken.rs:8:22 |
| | |
| LL | fn bar(&self) -> impl Sized; |
| | ^^^^^^^^^^ |
| = note: expected signature `fn(&_) -> impl Sized` |
| found signature `fn(&_) -> U` |
| help: change the output type to match the trait |
| | |
| LL | fn bar(&self) -> impl Sized { |
| | ~~~~~~~~~~ |
| |
| error: method with return-position `impl Trait` in trait cannot be specialized |
| --> $DIR/specialization-broken.rs:15:5 |
| | |
| LL | fn bar(&self) -> U { |
| | ^^^^^^^^^^^^^^^^^^ |
| | |
| = note: specialization behaves in inconsistent and surprising ways with return position `impl Trait` in traits, and for now is disallowed |
| |
| error: aborting due to 2 previous errors |
| |
| For more information about this error, try `rustc --explain E0053`. |