How to create a loop that runs with a delay in Rust

1 Answer

0 votes
use std::thread::sleep;
use std::time::{Duration, Instant};

fn main() {

    let interval = Duration::from_secs(1);
    let mut next_time = Instant::now() + interval;
    let mut i = 0;
    loop {
        println!("{:?}", next_time); 
        sleep(next_time - Instant::now());
        next_time += interval;
        i += 1;
        if i == 7 {
            break;
        }
    }
}

   
   
/*
run:

Instant { tv_sec: 874606, tv_nsec: 345730049 }
Instant { tv_sec: 874607, tv_nsec: 345730049 }
Instant { tv_sec: 874608, tv_nsec: 345730049 }
Instant { tv_sec: 874609, tv_nsec: 345730049 }
Instant { tv_sec: 874610, tv_nsec: 345730049 }
Instant { tv_sec: 874611, tv_nsec: 345730049 }
Instant { tv_sec: 874612, tv_nsec: 345730049 }

*/

 



answered Aug 7, 2024 by avibootz
...