Speedracer

A crate for racing Futures and getting ranked results back.

Example

```rs use tokio::time::sleep; use std::time::Duration;

use speedracer::RaceTrack;

[tokio::main]

async fn main() { let mut racetrack = RaceTrack::disqualifyafter(Duration::from_millis(300));

racetrack.addracer("Racer #1", async move { sleep(std::time::Duration::frommillis(100)).await; Ok(()) }); racetrack.addracer("Racer #2", async move { sleep(std::time::Duration::fromsecs(200)).await; Ok(()) }); racetrack.addracer("Racer #3", async move { sleep(std::time::Duration::from_secs(700)).await; Ok(()) });

racetrack.run().await; let rankings = racetrack.rankings();

asserteq!(rankings[0].name, "Racer #1"); asserteq!(rankings[1].name, "Racer #2"); asserteq!(rankings[2].name, "Racer #3"); asserteq!(rankings[2].disqualified, true); } ```