1 个不稳定版本

0.1.0 2019年10月24日

#43 in #task-runner

MIT 许可证

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