```rust trait Trait { type Assoc; } #[derive(Clone)] struct Foo<T: Trait> { value: T::Assoc, // ok, gets a `T::Assoc: Clone` bound } #[derive(Clone)] struct Bar<T: Trait> { value: <T as Trait>::Assoc, // error } ```