cronoq-core 0.2.1

Sans-IO core engine of the cronoq elastic priority scheduler
Documentation
use cronoq_core::*;
fn main() {
    let mut core: Core<u64> = Core::new(CoreConfig {
        pools: vec![PoolConfig::fixed("default", 1024)],
        ..Default::default()
    });
    let classes = Priority::ALL;
    let mut now = 0u64;
    for i in 0..100_000u64 {
        core.submit(
            Time(now),
            TaskSpec::new(i).priority(classes[(i % 4) as usize]),
        )
        .unwrap();
    }
    let mut leases = Vec::new();
    let mut done = 0u64;
    while done < 300_000 {
        now += 1000;
        while let Some(a) = core.poll_action() {
            if let Action::Dispatch(d) = a {
                leases.push(d.lease);
            }
        }
        for l in leases.drain(..) {
            core.complete(Time(now), l, Outcome::Success);
            core.submit(
                Time(now),
                TaskSpec::new(done).priority(classes[(done % 4) as usize]),
            )
            .unwrap();
            done += 1;
        }
    }
}