#![feature(type_alias_impl_trait)] #![allow(dead_code)] use std::fmt::Debug; type FooX = impl Debug; trait Foo {} impl Foo<()> for () {} impl Foo for () {} fn foo() -> impl Foo { //~^ ERROR: the trait bound `(): Foo` is not satisfied () } fn main() {}