mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-02 19:53:46 +00:00
17a6ae2df3
When an associated type with GATs isn't specified in a `dyn Trait`, emit an object safety error instead of only complaining about the missing associated type, as it will lead the user down a path of three different errors before letting them know that what they were trying to do is impossible to begin with. Fix #103155.
22 lines
1003 B
Plaintext
22 lines
1003 B
Plaintext
error[E0038]: the trait `Eq` cannot be made into an object
|
|
--> $DIR/object-fail.rs:7:13
|
|
|
|
|
LL | let _: &dyn EqAlias = &123;
|
|
| ^^^^^^^^^^^ `Eq` cannot be made into an object
|
|
|
|
|
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
|
|
--> $SRC_DIR/core/src/cmp.rs:LL:COL
|
|
|
|
|
= note: the trait cannot be made into an object because it uses `Self` as a type parameter
|
|
|
|
error[E0191]: the value of the associated type `Item` in `Iterator` must be specified
|
|
--> $DIR/object-fail.rs:9:17
|
|
|
|
|
LL | let _: &dyn IteratorAlias = &vec![123].into_iter();
|
|
| ^^^^^^^^^^^^^ help: specify the associated type: `IteratorAlias<Item = Type>`
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
Some errors have detailed explanations: E0038, E0191.
|
|
For more information about an error, try `rustc --explain E0038`.
|