apool 0.1.3

Async generic pool crate for rust
Documentation
use crate::Pool;

#[test]
#[should_panic]
fn zero_size_disallowed() {
    let _ = Pool::<(), ()>::new(0, (), |_, _| ());
}

#[test]
fn basic_usize_test() {
    let pool = Pool::<usize, usize>::new(4, 0, |state, transform| {
        let sc = *state;
        transform.spawn(async move { sc });
        *state += 1;
    });
    tokio::runtime::Builder::new_current_thread().build().unwrap().block_on(async {
        let guard1 = pool.get().await;
        assert_eq!(*guard1, 0);
        let guard2 = pool.get().await;
        assert_eq!(*guard2, 1);
        let guard3 = pool.get().await;
        assert_eq!(*guard3, 2);
        let guard4 = pool.get().await;
        assert_eq!(*guard4, 3);

        drop(guard3);
        drop(guard2);

        let guard2 = pool.get().await;
        assert_eq!(*guard2, 1);
        let guard3 = pool.get().await;
        assert_eq!(*guard3, 2);
    });
}