// Repro for . //@ edition: 2021 //@ revisions: assumptions no_assumptions //@[assumptions] compile-flags: -Zhigher-ranked-assumptions //@[assumptions] known-bug: unknown //@[no_assumptions] known-bug: #110338 use core::pin::Pin; use std::future::Future; pub trait Foo<'a> { type Future: Future; fn foo() -> Self::Future; } struct MyType(T); impl<'a, T> Foo<'a> for MyType where T: Foo<'a>, T::Future: Send, { type Future = Pin + Send + 'a>>; fn foo() -> Self::Future { Box::pin(async move { >::foo().await }) } } fn main() {}