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.
24 lines
888 B
Plaintext
24 lines
888 B
Plaintext
error[E0277]: the trait bound `u32: Trait` is not satisfied
|
|
--> $DIR/trait_objects_fail.rs:26:9
|
|
|
|
|
LL | foo(&10_u32);
|
|
| ^^^^^^^ the trait `Trait` is not implemented for `u32`
|
|
|
|
|
= help: the trait `Trait<12>` is not implemented for `u32`
|
|
but trait `Trait<2>` is implemented for it
|
|
= note: required for the cast from `&u32` to `&dyn Trait`
|
|
|
|
error[E0277]: the trait bound `bool: Traitor<_>` is not satisfied
|
|
--> $DIR/trait_objects_fail.rs:28:9
|
|
|
|
|
LL | bar(&true);
|
|
| ^^^^^ the trait `Traitor<_>` is not implemented for `bool`
|
|
|
|
|
= help: the trait `Traitor<_, _>` is not implemented for `bool`
|
|
but trait `Traitor<2, 3>` is implemented for it
|
|
= note: required for the cast from `&bool` to `&dyn Traitor<_>`
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0277`.
|