use crate::{FLUSH_IN_PROGRESS_BIT, OFFSET_SHIFT, SEALED_BIT, WRITER_MASK, WRITER_SHIFT};
#[derive(Debug, Clone, Copy)]
pub struct State {
pub(crate) inner: usize,
}
impl State {
#[inline(always)]
pub fn offset(&self) -> usize {
self.inner >> OFFSET_SHIFT
}
#[inline(always)]
pub fn n_writers(&self) -> usize {
(self.inner & WRITER_MASK) >> WRITER_SHIFT
}
#[inline(always)]
pub fn sealed(&self) -> bool {
self.inner & SEALED_BIT != 0
}
#[inline(always)]
pub fn flushing(&self) -> bool {
self.inner & FLUSH_IN_PROGRESS_BIT != 0
}
}
impl From<usize> for State {
fn from(inner: usize) -> Self {
Self { inner }
}
}
impl From<State> for usize {
fn from(state: State) -> usize {
state.inner
}
}