#[path = "type_guard.rs"]
mod guard;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Bounded<T, const N: usize>(Vec<T>);
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct NonEmpty<T, const N: usize> {
head: T,
tail: Vec<T>,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Capped<T, const N: usize> {
items: NonEmpty<T, N>,
capping: Capping,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Capping {
Complete,
Truncated {
omitted: usize,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Overflow {
pub capacity: usize,
pub offered: usize,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Empty;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum NonEmptyError {
Empty(Empty),
Overflow(Overflow),
}