-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsA-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`Area: Suggestions generated by the compiler applied by `cargo fix`F-associated_type_bounds`#![feature(associated_type_bounds)]``#![feature(associated_type_bounds)]`T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.requires-nightlyThis issue requires a nightly compiler in some way.This issue requires a nightly compiler in some way.
Description
Consider the following code:
trait Foo {}
fn bar(_: impl Iterator<Item = Foo>) {}
// Or another similar case:
trait Bar {
type X: Iterator<Item = Foo>;
}
The current output is:
error[E0782]: trait objects must include the `dyn` keyword
--> src/lib.rs:3:32
|
3 | fn bar(_: impl Iterator<Item = Foo>) {}
| ^^^
|
help: add `dyn` keyword before this trait
|
3 | fn bar(_: impl Iterator<Item = dyn Foo>) {}
| +++
This is reasonable especially in light of the ongoing migration from the old dyn
-less trait object syntax. However, an alternative interpretation of the syntax error is that the user accidentally used a type equality bound =
when they actually meant a trait bound :
. The error message could include a suggestion to replace =
with :
.
help: or if you meant to write a trait bound, replace `=` with `:`
|
3 | fn bar(_: impl Iterator<Item = Foo>) {}
| --
3 | fn bar(_: impl Iterator<Item: Foo>) {}
| +
See also related #99304 which proposes that impl Foo
should be suggested rather than dyn Foo
.
tgross35
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsA-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`Area: Suggestions generated by the compiler applied by `cargo fix`F-associated_type_bounds`#![feature(associated_type_bounds)]``#![feature(associated_type_bounds)]`T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.requires-nightlyThis issue requires a nightly compiler in some way.This issue requires a nightly compiler in some way.