#timer #simpler #duration #limited #straight-forward #timeout #callback

simpler_timer

A very simple timer library with limited, but straight-forward functionality

3 unstable releases

0.2.0 Jul 14, 2020
0.1.1 Jul 14, 2020
0.1.0 Jul 13, 2020

#22 in #simpler

Download history 255/week @ 2024-07-27 186/week @ 2024-08-03 147/week @ 2024-08-10 198/week @ 2024-08-17 159/week @ 2024-08-24 209/week @ 2024-08-31 250/week @ 2024-09-07 195/week @ 2024-09-14 303/week @ 2024-09-21 280/week @ 2024-09-28 281/week @ 2024-10-05 290/week @ 2024-10-12 134/week @ 2024-10-19 91/week @ 2024-10-26 144/week @ 2024-11-02 99/week @ 2024-11-09

497 downloads per month
Used in oryx

MIT/Apache

6KB
60 lines

Simpler Timer

Crates.io Docs.rs

This library provides a very simple, poll based timer.

To use, include the following in Cargo.toml

[dependencies]
simpler_timer = "0.2.0"
use simpler_timer::Timer;
use std::time::Duration;

fn main() {
    let periodic = Timer::with_duration(Duration::from_millis(100));
    let timeout = Timer::with_duration(Duration::from_secs(2));
    

    loop {
        if periodic.expired() {
            println!("tick");
            periodic.reset();
        }

        if timeout.expired() {
            break;
        }
    }

    println!("total elapsed time: {}ms", timeout.elapsed().as_millis());
}

lib.rs:

simpler_timer

A simple timer mechanism to track arbitrary timeouts. It doesn't do anything fancy, e.g. no callbacks upon expiry, just give it a Duration and poll if the timer is expired. Timers can be reset and reused for periodic contexts, such as a simple time based control loop.

Example

use std::time::Duration;

// 100ms timer
let tick = Timer::with_duration(Duration::from_millis(100));
// 1 sec timer
let end = Timer::with_duration(Duration::from_secs(1));

loop {
    if tick.expired() {
        // do something interesting
        println!("tick");
        tick.reset();
    }

    if end.expired() { 
        // don't reset, let's get out of here
        break; 
    }
}

println!("total time: {}ms", end.elapsed().as_millis());

No runtime deps