| struct MyType; |
| trait MyTrait<S> {} |
| |
| trait Mirror { |
| type Assoc; |
| } |
| impl<T> Mirror for T { |
| type Assoc = T; |
| } |
| |
| impl<T: Copy, S: Iterator> MyTrait<S> for (T, S::Item) {} |
| //~^ NOTE first implementation here |
| impl<S: Iterator> MyTrait<S> for (Box<<(MyType,) as Mirror>::Assoc>, S::Item) {} |
| //~^ ERROR conflicting implementations of trait `MyTrait<_>` for type `(Box<(MyType,)>, |
| //~| NOTE conflicting implementation for `(Box<(MyType,)>, |
| //~| NOTE upstream crates may add a new impl of trait `std::marker::Copy` for type `std::boxed::Box<(MyType,)>` in future versions |
| //~| NOTE upstream crates may add a new impl of trait `std::clone::Clone` for type `std::boxed::Box<(MyType,)>` in future versions |
| |
| fn main() {} |