interval/
interval.rs

1use std::{
2    sync::{atomic::AtomicUsize, Arc},
3    thread::sleep,
4    time::Duration,
5};
6
7use std::sync::atomic::Ordering::SeqCst;
8
9use swnb_timer::Timer;
10
11fn main() {
12    let timer = Timer::new();
13    let count: Arc<AtomicUsize> = Default::default();
14    let count_clone = count.clone();
15    // count will increase every 1 sec
16    let _ = timer.set_interval(
17        move || {
18            count_clone.fetch_add(1, SeqCst);
19            println!("run callback success");
20        },
21        Duration::from_secs(2),
22    );
23
24    sleep(Duration::from_secs(5));
25
26    assert_eq!(count.load(SeqCst), 2);
27}