]> git.proxmox.com Git - rustc.git/blame - tests/ui/async-await/in-trait/issue-102138.rs
Merge 1.70 into proxmox/bookworm
[rustc.git] / tests / ui / async-await / in-trait / issue-102138.rs
CommitLineData
2b03887a
FG
1// check-pass
2// edition:2021
353b0b11
FG
3// [next] compile-flags: -Zlower-impl-trait-in-trait-to-assoc-ty
4// revisions: current next
2b03887a
FG
5
6#![feature(async_fn_in_trait)]
7#![allow(incomplete_features)]
8
9use std::future::Future;
10
11async fn yield_now() {}
12
13trait AsyncIterator {
14 type Item;
15 async fn next(&mut self) -> Option<Self::Item>;
16}
17
18struct YieldingRange {
19 counter: u32,
20 stop: u32,
21}
22
23impl AsyncIterator for YieldingRange {
24 type Item = u32;
25
26 async fn next(&mut self) -> Option<Self::Item> {
27 if self.counter == self.stop {
28 None
29 } else {
30 let c = self.counter;
31 self.counter += 1;
32 yield_now().await;
33 Some(c)
34 }
35 }
36}
37
38async fn async_main() {
39 let mut x = YieldingRange { counter: 0, stop: 10 };
40
41 while let Some(v) = x.next().await {
42 println!("Hi: {v}");
43 }
44}
45
46fn main() {
47 let _ = async_main();
48}