pub use ic_stable_structures::btreemap::*;
use derive_more::{Deref, DerefMut};
use ic_stable_structures::{Memory, Storable, btreemap::BTreeMap as WrappedBTreeMap};
#[derive(Deref, DerefMut)]
pub struct BTreeMap<K, V, M>
where
K: Storable + Ord + Clone,
V: Storable + Clone,
M: Memory,
{
data: WrappedBTreeMap<K, V, M>,
}
impl<K, V, M> BTreeMap<K, V, M>
where
K: Storable + Ord + Clone,
V: Storable + Clone,
M: Memory,
{
#[must_use]
pub fn init(memory: M) -> Self {
Self {
data: WrappedBTreeMap::init(memory),
}
}
pub fn view(&self) -> impl Iterator<Item = (K, V)> + '_ {
self.iter().map(|e| (e.key().clone(), e.value()))
}
pub fn to_vec(&self) -> Vec<(K, V)> {
self.iter().map(|e| (e.key().clone(), e.value())).collect()
}
pub fn clear(&mut self) {
self.clear_new();
}
}