scheduled_task/
lib.rs

1//! 通过`#[scheduled]`属性宏生成定时任务
2//!
3//! `#[scheduled]`有两个属性
4//! + cron:指定表达式, 如:cron = "*/1 * * * * *"
5//! + rate:指定时间频率,单位:秒
6//!
7//! > 注意: cron和rate两者必须且只能有一个有值
8//!
9//! `#[scheduled]`必须添加在一个无参数、无返回值的异步函数上
10//! 然后需要执行一下该函数,定时任务才能生效
11//! > 项目中需要引入[tokio]和[tokio-cron-scheduler]库
12//!
13//! # Example
14//! ```
15//! #[scheduled(cron = "*/1 * * * * *")]
16//! async fn func1() {
17//!     println!("func1");
18//! }
19//!
20//! #[tokio::main]
21//! async fn main() {
22//!     run_cron_task!(func1);
23//!     // 或
24//!     // func1().await;
25//! }
26//! ```
27
28/// 运行添加了#[scheduled]属性的方法
29///
30/// #Example
31/// ```
32/// #[scheduled(cron = "*/1 * * * * *")]
33/// async fn func1() {
34///     println!("func1");
35/// }
36///
37/// #[tokio::main]
38/// async fn main() {
39///     run_cron_task!(func1);
40/// }
41/// ```
42#[macro_export]
43macro_rules! run_cron_task {
44    ($($var:ident),+ $(,)?) => {
45        $($var().await;)+
46    };
47}
48
49
50pub use scheduled_task_macro::*;