// check-pass // compile-flags: -Ztrait-solver=next // Issue 96750 use std::marker::PhantomData; trait AsyncFn { type Output; } trait RequestFamily { type Type<'a>; } trait Service {} struct MyFn; impl AsyncFn for MyFn { type Output = (); } impl RequestFamily for String { type Type<'a> = String; } struct ServiceFromAsyncFn(F, PhantomData); impl Service for ServiceFromAsyncFn where Req: RequestFamily, F: AsyncFn, F: for<'a> AsyncFn, Output = O>, { } fn assert_service() -> impl Service { ServiceFromAsyncFn(MyFn, PhantomData) } fn main() {}