diff options
Diffstat (limited to 'src/_loop.rs')
-rw-r--r-- | src/_loop.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/_loop.rs b/src/_loop.rs new file mode 100644 index 000000000000..1fc1bf8fcc28 --- /dev/null +++ b/src/_loop.rs @@ -0,0 +1,22 @@ +//! A timed loop implementation + +use async_std::{future::Future, task}; +use chrono::{DateTime, Utc}; +use std::{thread, time::Duration}; + +/// Number of ticks per second +const TICKS: u64 = 100; +const TICK_TIME: Duration = Duration::from_millis(1000 / TICKS); + +pub fn block_loop<F>(f: F) +where + F: Future<Output = ()> + Send + Copy + 'static, +{ + loop { + let t1 = Utc::now(); + task::block_on(f); + let t2 = Utc::now(); + let t3 = (t2 - t1).to_std().unwrap(); + thread::sleep(TICK_TIME - t3); + } +} |