30 lines
585 B
Rust
30 lines
585 B
Rust
|
// check-pass
|
||
|
// edition: 2021
|
||
|
// issue: 113796
|
||
|
|
||
|
#![feature(async_fn_in_trait)]
|
||
|
|
||
|
trait AsyncLendingIterator {
|
||
|
type Item<'a>
|
||
|
where
|
||
|
Self: 'a;
|
||
|
|
||
|
async fn next(&mut self) -> Option<Self::Item<'_>>;
|
||
|
}
|
||
|
|
||
|
struct Lend<I>(I);
|
||
|
impl<I> AsyncLendingIterator for Lend<I> {
|
||
|
type Item<'a> = &'a I
|
||
|
where
|
||
|
Self: 'a;
|
||
|
|
||
|
// Checking that the synthetic `<Self as AsyncLendingIterator>::next()` GAT
|
||
|
// is well-formed requires being able to assume the WF types of `next`.
|
||
|
|
||
|
async fn next(&mut self) -> Option<Self::Item<'_>> {
|
||
|
todo!()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {}
|