// edition: 2021 // build-fail #![feature(impl_trait_in_assoc_type)] use core::future::Future; trait Recur { type Recur: Future; fn recur(self) -> Self::Recur; } async fn recur(t: impl Recur) { t.recur().await; } impl Recur for () { type Recur = impl Future; fn recur(self) -> Self::Recur { async move { recur(self).await; } //~^ ERROR cycle detected when computing layout of } } fn main() { recur(()); }