mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 12:12:19 +01:00
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 ();
|
|
}
|
|
}
|