41 lines
775 B
Rust
41 lines
775 B
Rust
|
//@ edition: 2024
|
||
|
//@ compile-flags: -Zunstable-options
|
||
|
//@ run-pass
|
||
|
#![feature(gen_blocks)]
|
||
|
#![feature(optimize_attribute)]
|
||
|
#![feature(stmt_expr_attributes)]
|
||
|
#![feature(async_iterator)]
|
||
|
#![allow(dead_code)]
|
||
|
|
||
|
// make sure that other attributes e.g. `optimize` can be applied to gen blocks and functions
|
||
|
|
||
|
fn main() { }
|
||
|
|
||
|
fn optimize_gen_block() -> impl Iterator<Item = ()> {
|
||
|
#[optimize(speed)]
|
||
|
gen { yield (); }
|
||
|
}
|
||
|
|
||
|
#[optimize(speed)]
|
||
|
gen fn optimize_gen_fn() -> i32 {
|
||
|
yield 1;
|
||
|
yield 2;
|
||
|
yield 3;
|
||
|
}
|
||
|
|
||
|
#[optimize(speed)]
|
||
|
async gen fn optimize_async_gen_fn() -> i32 {
|
||
|
yield 1;
|
||
|
yield 2;
|
||
|
yield 3;
|
||
|
}
|
||
|
|
||
|
use std::async_iter::AsyncIterator;
|
||
|
|
||
|
pub fn deduce() -> impl AsyncIterator<Item = ()> {
|
||
|
#[optimize(size)]
|
||
|
async gen {
|
||
|
yield ();
|
||
|
}
|
||
|
}
|