//@ 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 { #[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 { #[optimize(size)] async gen { yield (); } }