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}