wg 1.0.1

Golang like WaitGroup implementation for sync/async Rust.
Documentation
use std::{
  sync::{
    atomic::{AtomicUsize, Ordering},
    Arc,
  },
  thread::{sleep, spawn},
  time::Duration,
};
use wg::WaitGroup;

fn main() {
  let wg = WaitGroup::new();
  let ctr = Arc::new(AtomicUsize::new(0));

  for _ in 0..5 {
    let ctrx = ctr.clone();
    let t_wg = wg.add(1);
    spawn(move || {
      // mock some time consuming task
      sleep(Duration::from_millis(50));
      ctrx.fetch_add(1, Ordering::Relaxed);

      // mock task is finished
      t_wg.done();
    });
  }

  wg.wait();
  assert_eq!(ctr.load(Ordering::Relaxed), 5);
}