use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RedactionHandle {
pub(super) transaction_id: u64,
pub(super) item_index: usize,
}
impl RedactionHandle {
#[must_use]
pub(crate) const fn new(transaction_id: u64, item_index: usize) -> Self {
Self {
transaction_id,
item_index,
}
}
#[must_use]
#[inline(always)]
pub(crate) const fn parts(self) -> (u64, usize) {
(self.transaction_id, self.item_index)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RedactionHandleError {
DifferentTransaction,
MissingItem,
}
impl fmt::Display for RedactionHandleError {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::DifferentTransaction => formatter.write_str("the handle belongs to a different transaction"),
Self::MissingItem => formatter.write_str("the handle does not identify a published item"),
}
}
}
impl std::error::Error for RedactionHandleError {}