rust/tests/ui/traits/coercion-generic-bad.stderr
Esteban Küber b7fc1a7431 Add trait diff highlighting logic and use it in E0277
When a trait is not implemented for a type, but there *is* an `impl`
for another type or different trait params, we format the output to
use highlighting in the same way that E0308 does for types.

The logic accounts for 3 cases:
- When both the type and trait in the expected predicate and the candidate are different
- When only the types are different
- When only the trait generic params are different

For each case, we use slightly different formatting and wording.
2024-11-02 03:08:04 +00:00

15 lines
734 B
Plaintext

error[E0277]: the trait bound `Struct: Trait<isize>` is not satisfied
--> $DIR/coercion-generic-bad.rs:16:36
|
LL | let s: Box<dyn Trait<isize>> = Box::new(Struct { person: "Fred" });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait<isize>` is not implemented for `Struct`
|
= help: the trait `Trait<isize>` is not implemented for `Struct`
but trait `Trait<&'static str>` is implemented for it
= help: for that trait implementation, expected `&'static str`, found `isize`
= note: required for the cast from `Box<Struct>` to `Box<dyn Trait<isize>>`
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0277`.