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

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

#20 in #simpler

Download history 343/week @ 2024-03-14 244/week @ 2024-03-21 247/week @ 2024-03-28 187/week @ 2024-04-04 313/week @ 2024-04-11 162/week @ 2024-04-18 266/week @ 2024-04-25 147/week @ 2024-05-02 160/week @ 2024-05-09 320/week @ 2024-05-16 268/week @ 2024-05-23 302/week @ 2024-05-30 237/week @ 2024-06-06 198/week @ 2024-06-13 242/week @ 2024-06-20 180/week @ 2024-06-27

935 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