// check-pass // edition: 2021 use std::marker::PhantomData; pub struct Struct(PhantomData ::Item>) where Self: It; impl It for Struct where I: It, { type Item = (); } pub trait It { type Item; } fn f() -> impl Send { async { let _x = Struct::, _>(PhantomData); async {}.await; } } pub struct Empty(PhantomData T>); impl It for Empty { type Item = T; } fn main() {}