use crate::depot::queue::round::set;
#[derive(Debug)]
pub struct Ready;
impl<'a, T, Tag, const MAX: u32, const ROOT: bool, B>
set::Occupied<'a, T, Tag, MAX, ROOT, B, Ready>
{
pub fn remove(self) -> set::Occupied<'a, T, Tag, MAX, ROOT, B, set::Idle> {
let entry = self;
unsafe { entry.order.ring().unlink_key(entry.order, entry.index) };
entry.phase()
}
pub fn requeue(self) -> Self {
let ring = self.order.ring();
let first = unsafe { ring.first_live() };
unsafe { ring.move_back::<_, false>(self.order, self.index, first) };
self
}
}