Try on playpen:
trait Make {
type Out;
fn make() -> Self::Out;
}
impl Make for () {
type Out = ();
fn make() -> Self::Out {}
}
This looks like missing normalization when checking for the return type.
fn make() -> Self::Out { () } and fn make() -> Self::Out { return; } work just fine.