use const_init::ConstInit;
#[cfg(target_has_atomic = "ptr")]
pub mod cas;
#[cfg(feature = "critical-section")]
pub mod cs;
#[derive(PartialEq, Debug)]
pub enum WriteGrantError {
InsufficientSize,
GrantInProgress,
}
#[derive(PartialEq, Debug)]
pub enum ReadGrantError {
Empty,
GrantInProgress,
InconsistentFrameHeader,
}
pub unsafe trait Coord: ConstInit {
fn reset(&self);
fn grant_max_remaining(
&self,
capacity: usize,
sz: usize,
) -> Result<(usize, usize), WriteGrantError>;
fn grant_exact(&self, capacity: usize, sz: usize) -> Result<usize, WriteGrantError>;
fn commit_inner(&self, capacity: usize, grant_len: usize, used: usize);
fn read(&self) -> Result<(usize, usize), ReadGrantError>;
fn release_inner(&self, used: usize);
}