libsync 0.3.0

A channels library
use std::sync::atomic::{AtomicBool, AtomicUsize};

use scc::{HashMap, Queue};

use crate::QueuedWaker;

pub struct WakerPermitQueue
{

    is_closed: AtomicBool,
    queue: Queue<QueuedWaker>,
    latest_handle: AtomicUsize,
    active_handles: HashMap<usize, bool>,
    permits: AtomicUsize,

}

impl WakerPermitQueue
{

    pub fn new() -> Self
    {

        Self
        {

            is_closed: AtomicBool::new(false),
            queue: Queue::new(),
            latest_handle: AtomicUsize::new(0),
            active_handles: HashMap::new(),
            permits: AtomicUsize::new(0)

        }

    }



}