pub trait Bar {} pub trait Qux {} pub trait Foo { fn bar() where T: Bar, { } } pub struct Concrete; impl Foo<(), S> for Concrete {} impl Bar for T where S: Qux {} impl Qux for S where T: Bar {}