#![feature(type_alias_impl_trait)] trait T { type Assoc: Cake; } trait Cake: std::fmt::Display { fn cake() -> Self; } type Foo = impl T; fn foo() -> impl T { //~^ ERROR `(): T` is not satisfied panic!() } fn a() -> Foo { foo() } fn main() { println!("{}", ::Assoc::cake()); }