use crate::buffer::{segments, segments::assembly};
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Error {
Count(assembly::Overflow<segments::Count>),
Logical(assembly::Overflow),
Resident(assembly::Overflow),
}
impl Error {
pub(in crate::buffer::segments) fn count(
current: segments::Count,
added: segments::Count,
) -> Result<segments::Count, Self> {
current
.checked_add(added)
.ok_or(Self::Count(assembly::Overflow { current, added }))
}
pub(in crate::buffer::segments) fn logical(
current: usize,
added: usize,
) -> Result<usize, Self> {
current
.checked_add(added)
.ok_or(Self::Logical(assembly::Overflow { current, added }))
}
pub(in crate::buffer::segments) fn resident(
current: usize,
added: usize,
) -> Result<usize, Self> {
current
.checked_add(added)
.ok_or(Self::Resident(assembly::Overflow { current, added }))
}
}