taskwait 0.2.1

Runtime agnostic way to wait for a group of async tasks
Documentation
# taskwait

Runtime agnostic way of waiting for async tasks.

# Features

* Done: Support for golang's `WaitGroup.Add` & `WaitGroup.Done`
* Done: Support for RAII based `done()`ing the task i.e. calling `done()` on drop.
* Done: Mixing of both `add`, `done` and RAII semantics.
* Todo: Reuse the same taskgroup for multiple checkpoints.

# Example 

## Using add & done

```rust
use taskwait::TaskGroup;
 
let tg = TaskGroup::();
for _ in 0..10 {
    tg.add(1);
    let tg_c = tg.clone();
    tokio::spawn(async move{
        ...
        tg_c.done();
    })
}
tg.wait().await;
```

## Using add & auto_work

```rust
use taskwait::TaskGroup;
 
let tg = TaskGroup::();
for _ in 0..10 {
    let work = tg.add_work(1); // Increment counter
    tokio::spawn(async move{
        let _work = work; // done() will be called when this is dropped
        ...
    })
}
tg.wait().await;
```