Why this fires¶
An implementation selected a concrete associated type that does not satisfy a bound declared by the trait.
trait Source {
type Item: Ord
}
struct Callback {}
impl Source for Callback {
type Item = fn(int) -> int
// ^ error[TE480]: function does not implement Ord
}The diagnostic names the implementation, the projected associated type, and
the failed requirement. The original type is preserved; it is never replaced
with Any merely to make the impl pass.
Fix it¶
Choose an associated type that implements every declared bound, or remove a bound from the trait only when consumers genuinely do not need that capability.