trait Bar {} trait Foo { type Assoc: Bar; } impl Foo for () { type Assoc = bool; //~ ERROR the trait bound `bool: Bar` is not satisfied } trait Baz where Self::Assoc: Bar, { type Assoc; } impl Baz for () { type Assoc = bool; //~ ERROR the trait bound `bool: Bar` is not satisfied } trait Bat where ::Assoc: Bar, { type Assoc; } impl Bat for () { type Assoc = bool; //~ ERROR the trait bound `bool: Bar` is not satisfied } fn main() {}