#![feature(generators)] #![warn(clippy::large_futures)] #![allow(clippy::never_loop)] #![allow(clippy::future_not_send)] #![allow(clippy::manual_async_fn)] async fn big_fut(_arg: [u8; 1024 * 16]) {} async fn wait() { let f = async { Box::pin(big_fut([0u8; 1024 * 16])).await; }; Box::pin(f).await } async fn calls_fut(fut: impl std::future::Future) { loop { Box::pin(wait()).await; if true { return fut.await; } else { Box::pin(wait()).await; } } } pub async fn test() { let fut = big_fut([0u8; 1024 * 16]); Box::pin(foo()).await; Box::pin(calls_fut(fut)).await; } pub fn foo() -> impl std::future::Future { async { let x = [0i32; 1024 * 16]; async {}.await; dbg!(x); } } pub async fn lines() { Box::pin(async { let x = [0i32; 1024 * 16]; async {}.await; println!("{:?}", x); }) .await; } pub async fn macro_expn() { macro_rules! macro_ { () => { Box::pin(async { let x = [0i32; 1024 * 16]; async {}.await; println!("macro: {:?}", x); }) }; } macro_!().await } fn main() {}