1 个不稳定版本
0.1.0 | 2019年10月24日 |
---|
#43 in #task-runner
16KB
318 行
heng_rs
在 tokio-runtime 上实现单向消息推送的调度任务运行器。
要求
rustc1.39.0-beta.6 (224f0bc902019-10-15)
lib.rs
:
一个简单的在 tokio 运行时上支持单向消息推送的调度任务运行器。
示例
use std::time::Duration;
use heng_rs::{Scheduler, Time, ToDuration};
struct TestTask(u32);
impl Scheduler for TestTask {
type Message = u32;
}
#[tokio::main]
async fn main() -> std::io::Result<()> {
let task = TestTask(0);
let time = Time::new()
.every(1.d())
.plus(2.h())
.plus(3.m())
.plus(4.s());
// run task with a 1 day, 2 hours, 3 minutes and 4 seconds interval.
let addr = task.start(time, |task, ctx| {
if let Some(msg) = ctx.get_msg_front() {
/* do something with message */
}
// do something with task.
task.0 += 1;
// run a future.
async {
Ok::<(),()>(())
}
});
// use address to push message to task's context;
addr.send(1u32).await;
Ok(())
}
依赖
~1.5MB
~27K SLoC