pub trait Partial: Copy { } pub trait Complete { type Assoc: Partial; } impl Partial for T::Assoc where T: Complete { } impl Complete for T { type Assoc = T; //~ ERROR the trait bound `T: Copy` is not satisfied } fn main() {}