mod active;
mod inactive;
mod reset;
#[cfg(test)]
pub mod tests;
#[cfg(test)]
mod block_proptest;
pub(crate) use active::ActivePool;
pub(crate) use inactive::backends;
pub(crate) use inactive::{InactivePool, InactivePoolBackend};
pub(crate) use reset::ResetPool;
use crate::blocks::{
Block, BlockId, BlockMetadata, ImmutableBlock, MutableBlock, PrimaryBlock, RegisteredBlock,
state::{Registered, Reset},
};
pub(crate) use crate::SequenceHash;
pub(crate) trait BlockAllocator<T: BlockMetadata> {
fn insert(&mut self, block: Block<T, Reset>);
fn pop(&mut self) -> Option<Block<T, Reset>>;
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
}
#[expect(dead_code)]
pub(crate) trait BlockMatcher<T: BlockMetadata> {
fn find_match(&self, seq_hash: SequenceHash) -> Option<ImmutableBlock<T>>;
}
pub use crate::blocks::BlockDuplicationPolicy;
pub use inactive::backends::{ReusePolicy, ReusePolicyError};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct InactiveBlock {
pub block_id: BlockId,
pub seq_hash: SequenceHash,
}