It looks like the soundness hole of Pin
started moving things in the direction of stdlib's explicit negative impls:
Tangentially, I recently stumbled upon a related error which is also quite annoying:
trait PrivateTrait {}
pub(whatever)
trait MyTrait { ... }
impl<T : PrivateTrait> MyTrait for T { ... }
impl<Referee : ?Sized> MyTrait for &'_ Referee { ... }
failing with downstream crates may implement PrivateTrait for &'_ _
!