A blanket impl is an impl over a generic type bounded by a trait, like `impl<T: Display> ToString for T`. Why can a downstream crate NOT also write its own `impl ToString for MyType` when `MyType: Display`?
// In std (simplified):
impl<T: fmt::Display + ?Sized> ToString for T { /* ... */ }