use crate::{Memtable, tree::inner::MemtableId};
use std::sync::Arc;
#[derive(Clone, Default)]
pub struct SealedMemtables(Vec<Arc<Memtable>>);
impl SealedMemtables {
pub fn add(&self, memtable: Arc<Memtable>) -> Self {
let mut copy = self.clone();
copy.0.push(memtable);
copy
}
pub fn remove(&self, id_to_remove: MemtableId) -> Self {
let mut copy = self.clone();
copy.0.retain(|mt| mt.id != id_to_remove);
copy
}
pub fn iter(&self) -> impl DoubleEndedIterator<Item = &Arc<Memtable>> {
self.0.iter()
}
pub fn len(&self) -> usize {
self.0.len()
}
}