pub trait Replacer {
// Required methods
fn new(capacity: usize) -> Self
where Self: Sized;
fn record_access(&mut self, frame_id: FrameId) -> QuillSQLResult<()>;
fn evict(&mut self) -> Option<FrameId>;
fn set_evictable(
&mut self,
frame_id: FrameId,
set_evictable: bool,
) -> QuillSQLResult<()>;
fn remove(&mut self, frame_id: FrameId);
fn size(&self) -> usize;
}