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