orx-concurrent-queue 1.2.0

A high performance and convenient thread safe queue that can concurrently grow and shrink with push, extend, pop and pull capabilities.
Documentation
use core::cmp::Ordering;

pub enum WritePermit {
    JustWrite,
    GrowThenWrite,
    Spin,
}

impl WritePermit {
    #[inline(always)]
    pub fn for_one(capacity: usize, idx: usize) -> Self {
        match idx.cmp(&capacity) {
            Ordering::Less => Self::JustWrite,
            Ordering::Equal => Self::GrowThenWrite,
            Ordering::Greater => Self::Spin,
        }
    }

    #[inline(always)]
    pub fn for_many(capacity: usize, begin_idx: usize, last_idx: usize) -> Self {
        match (begin_idx.cmp(&capacity), last_idx.cmp(&capacity)) {
            (_, core::cmp::Ordering::Less) => Self::JustWrite,
            (core::cmp::Ordering::Greater, _) => Self::Spin,
            _ => Self::GrowThenWrite,
        }
    }
}