dev_tool/
scheduling_util.rs

1use std::time::Duration;
2use tokio::time;
3
4pub struct SchedulingUtil;
5
6/// 定时任务工具类
7impl SchedulingUtil {
8    
9    /// 设置一个定时任务,按照指定的时间间隔重复执行
10    ///
11    /// # 参数
12    /// * `task` - 要执行的任务函数,该函数不接受参数且无返回值
13    /// * `interval` - 执行间隔时间,单位为秒
14    ///
15    /// # 返回值
16    /// 无返回值
17    ///
18    /// # 说明
19    /// 该函数会创建一个定时器,按照指定的间隔时间无限循环执行传入的任务函数
20    pub async fn set_interval(mut task: impl FnMut(), interval: u64) {
21        // 创建定时器实例,用于控制任务执行间隔
22        let mut interval = time::interval(Duration::from_secs(interval));
23        loop {
24            // 等待下一个时间点到达
25            interval.tick().await;
26            // 执行任务函数
27            task();
28        }
29    }
30
31    /// 异步设置超时执行任务的函数
32    ///
33    /// 该函数会等待指定的超时时间后执行传入的任务闭包
34    ///
35    /// # 参数
36    /// * `task` - 一个只执行一次的闭包函数,在超时结束后被调用
37    /// * `timeout` - 超时时间,单位为秒
38    ///
39    /// # 返回值
40    /// 无返回值
41    pub async fn set_timeout(task: impl FnOnce(), timeout: u64) {
42        // 等待指定的超时时间
43        time::sleep(Duration::from_secs(timeout)).await;
44        // 执行传入的任务
45        task();
46    }
47}