When encountering an unsatisfied trait bound, if there are no other
suggestions, mention all the types that *do* implement that trait:
```
error[E0277]: the trait bound `f32: Foo` is not satisfied
--> $DIR/impl_wf.rs:22:6
|
LL | impl Baz<f32> for f32 { }
| ^^^^^^^^ the trait `Foo` is not implemented for `f32`
|
= help: the following other types implement trait `Foo`:
Option<T>
i32
str
note: required by a bound in `Baz`
--> $DIR/impl_wf.rs:18:31
|
LL | trait Baz<U: ?Sized> where U: Foo { }
| ^^^ required by this bound in `Baz`
```
Mention implementers of traits in `ImplObligation`s.
Do not mention other `impl`s for closures, ranges and `?`.
|
||
|---|---|---|
| .. | ||
| issue-45124.rs | ||
| try-block-bad-lifetime.rs | ||
| try-block-bad-lifetime.stderr | ||
| try-block-bad-type.rs | ||
| try-block-bad-type.stderr | ||
| try-block-catch.rs | ||
| try-block-catch.stderr | ||
| try-block-in-edition2015.rs | ||
| try-block-in-edition2015.stderr | ||
| try-block-in-match.rs | ||
| try-block-in-return.rs | ||
| try-block-in-while.rs | ||
| try-block-in-while.stderr | ||
| try-block-maybe-bad-lifetime.rs | ||
| try-block-maybe-bad-lifetime.stderr | ||
| try-block-opt-init.rs | ||
| try-block-opt-init.stderr | ||
| try-block-type-error.rs | ||
| try-block-type-error.stderr | ||
| try-block-unreachable-code-lint.rs | ||
| try-block-unreachable-code-lint.stderr | ||
| try-block-unused-delims.fixed | ||
| try-block-unused-delims.rs | ||
| try-block-unused-delims.stderr | ||
| try-block.rs | ||
| try-is-identifier-edition2015.rs | ||