use crate::entry::Entry;
use crate::traits::DataController;
use std::fmt::Debug;
use std::sync::Arc;
pub enum CompResult<DC>
where
DC: DataController,
{
Inserted(Entry<DC>),
ReplacedWith(Entry<DC>),
Removed(Entry<DC>),
Unchanged(Entry<DC>),
StillNone(Arc<DC::Key>),
}
impl<DC> Debug for CompResult<DC>
where
DC: DataController,
{
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Inserted(e) => fmt.debug_tuple("CompResult::Inserted").field(e).finish(),
Self::Removed(e) => fmt.debug_tuple("CompResult::Removed").field(e).finish(),
Self::ReplacedWith(e) => fmt.debug_tuple("CompResult::ReplacedWith").field(e).finish(),
Self::Unchanged(e) => fmt.debug_tuple("CompResult::Unchanged").field(e).finish(),
Self::StillNone(k) => fmt.debug_tuple("CompResult::StillNone").field(k).finish(),
}
}
}
#[derive(Debug, Clone, Copy)]
pub enum DataControllerOp {
Nop,
Insert,
Revoke,
Drop,
}
pub struct DataControllerResponse<DC>
where
DC: DataController,
{
pub op: DataControllerOp,
pub update: Option<DC::CacheUpdate>,
}
impl<DC> Debug for DataControllerResponse<DC>
where
DC: DataController,
{
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
fmt.debug_struct("DataControllerResponse")
.field("op", &self.op)
.field("update", &self.update)
.finish()
}
}