b7fc1a7431
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.
39 lines
1.6 KiB
Plaintext
39 lines
1.6 KiB
Plaintext
error[E0277]: the trait bound `&str: AsExpression<<SelectInt as Expression>::SqlType>` is not satisfied
|
|
--> $DIR/as_expression.rs:57:21
|
|
|
|
|
LL | SelectInt.check("bar");
|
|
| ----- ^^^^^ the trait `AsExpression<<SelectInt as Expression>::SqlType>` is not implemented for `&str`
|
|
| |
|
|
| required by a bound introduced by this call
|
|
|
|
|
= help: the trait `AsExpression<Text>` is implemented for `&str`
|
|
note: required by a bound in `Foo::check`
|
|
--> $DIR/as_expression.rs:48:12
|
|
|
|
|
LL | fn check<T>(&self, _: T) -> <T as AsExpression<<Self as Expression>::SqlType>>::Expression
|
|
| ----- required by a bound in this associated function
|
|
LL | where
|
|
LL | T: AsExpression<Self::SqlType>,
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Foo::check`
|
|
|
|
error[E0277]: the trait bound `&str: AsExpression<Integer>` is not satisfied
|
|
--> $DIR/as_expression.rs:57:15
|
|
|
|
|
LL | SelectInt.check("bar");
|
|
| ^^^^^ the trait `AsExpression<Integer>` is not implemented for `&str`
|
|
|
|
|
= help: the trait `AsExpression<Integer>` is not implemented for `&str`
|
|
but trait `AsExpression<Text>` is implemented for it
|
|
= help: for that trait implementation, expected `Text`, found `Integer`
|
|
|
|
error[E0271]: type mismatch resolving `<SelectInt as Expression>::SqlType == Text`
|
|
--> $DIR/as_expression.rs:57:5
|
|
|
|
|
LL | SelectInt.check("bar");
|
|
| ^^^^^^^^^^^^^^^^^^^^^^ expected `Text`, found `Integer`
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
Some errors have detailed explanations: E0271, E0277.
|
|
For more information about an error, try `rustc --explain E0271`.
|