use periodically::{AsyncTask, Task}; use std::{ future::ready, sync::{ atomic::{AtomicUsize, Ordering}, Arc, }, }; #[derive(Default)] pub struct SpyingTask { count: Arc, } impl SpyingTask { pub fn counter(&self) -> Arc { self.count.clone() } } impl Task for SpyingTask { fn run(&self) -> () { self.count.fetch_add(1, Ordering::Relaxed); } } impl AsyncTask for SpyingTask { fn run(&self) -> impl std::future::Future + Send { self.count.fetch_add(1, Ordering::Relaxed); ready(()) } }