1. use futures::pin_mut;
    2. async fn delay() {
    3. for i in 0..6 {
    4. tokio::time::sleep(std::time::Duration::from_secs(1)).await;
    5. println!("Ping! {}", i);
    6. }
    7. }
    8. async fn runner() {
    9. let delayer = delay();
    10. pin_mut!(delayer);
    11. if let Err(_) = tokio::time::timeout(std::time::Duration::from_secs(3), &mut delayer).await {
    12. println!("Taking more than three seconds");
    13. delayer.await;
    14. }
    15. }