unc_sdk/store/tree_map/
impls.rs1use std::borrow::Borrow;
2
3use borsh::{BorshDeserialize, BorshSerialize};
4
5use crate::env;
6use crate::store::{key::ToKey, TreeMap, ERR_NOT_EXIST};
7
8impl<K, V, H> Extend<(K, V)> for TreeMap<K, V, H>
9where
10 K: BorshSerialize + Ord + BorshDeserialize + Clone,
11 V: BorshSerialize + BorshDeserialize,
12 H: ToKey,
13{
14 fn extend<I>(&mut self, iter: I)
15 where
16 I: IntoIterator<Item = (K, V)>,
17 {
18 for (key, value) in iter {
19 self.insert(key, value);
20 }
21 }
22}
23
24impl<K, V, H, Q: ?Sized> core::ops::Index<&Q> for TreeMap<K, V, H>
25where
26 K: BorshSerialize + Ord + Clone + Borrow<Q>,
27 V: BorshSerialize + BorshDeserialize,
28 H: ToKey,
29
30 Q: BorshSerialize + ToOwned<Owned = K>,
31{
32 type Output = V;
33
34 fn index(&self, index: &Q) -> &Self::Output {
40 self.get(index).unwrap_or_else(|| env::panic_str(ERR_NOT_EXIST))
41 }
42}