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