canic_cdk/structures/
btreemap.rs1pub use ic_stable_structures::btreemap::*;
2
3use derive_more::{Deref, DerefMut};
4use ic_stable_structures::{Memory, Storable, btreemap::BTreeMap as WrappedBTreeMap};
5
6#[derive(Deref, DerefMut)]
12pub struct BTreeMap<K, V, M>
13where
14 K: Storable + Ord + Clone,
15 V: Storable + Clone,
16 M: Memory,
17{
18 data: WrappedBTreeMap<K, V, M>,
19}
20
21impl<K, V, M> BTreeMap<K, V, M>
22where
23 K: Storable + Ord + Clone,
24 V: Storable + Clone,
25 M: Memory,
26{
27 #[must_use]
28 pub fn init(memory: M) -> Self {
29 Self {
30 data: WrappedBTreeMap::init(memory),
31 }
32 }
33
34 pub fn view(&self) -> impl Iterator<Item = (K, V)> + '_ {
35 self.iter().map(|e| (e.key().clone(), e.value()))
36 }
37
38 pub fn to_vec(&self) -> Vec<(K, V)> {
40 self.iter().map(|e| (e.key().clone(), e.value())).collect()
41 }
42
43 pub fn clear(&mut self) {
47 self.clear_new();
48 }
49}