#timer #time #countdown #stopwatch #subathon

countrs

A simple countdown (or up!) with adjustable start and end times

7 releases

0.1.6 Apr 6, 2023
0.1.5 Apr 6, 2023

#392 in Date and time

GPL-3.0-or-later

19KB
466 lines

About

A counter stores start and end times, and implements Display to either show the time passed since start, or until end, formatted as HH(+):MM:SS.
The timer will not go down past 00:00:00.

Examples

Basic functionality is very simple:

let now = TimeStamp::now();
let mut counter = Counter::down(
    Some(now - 600),
    Some(now + 600)
);

// A small amount of time will have passed since `now` was assigned
assert_eq!(counter.to_string(), "00:09:59");
counter.flip();
// It now counts up from `start`
assert_eq!(counter.to_string(), "00:10:00")

Both start and end times are adjustable:

let mut counter = Counter::up(Some(TimeStamp::now()), None);
counter.try_move_start(-30).unwrap();

assert_eq!(counter.to_string(), "00:00:30")

Documentation

The full documentation is available here on docs.rs!

Motivation

The primary motivation for the creation of this library is the concept of a marathon livestream, where the stream begins with a timer set to e.g. 4 hours at the beginning, and viewers can increase this time by paying.

Dependencies

~1MB
~18K SLoC