luminos_contracts/support/interacts_with_data/contains/
hashmap.rs1use std::collections::HashMap;
2
3use super::super::{Contains, InteractsWithData, IntoData};
4
5impl<K: Eq + std::hash::Hash, V> Contains<K> for HashMap<K, V> {
6 fn contains_item(&self, key: &K) -> bool {
7 self.contains_key(key)
8 }
9}
10
11impl<K: Eq + std::hash::Hash, V> InteractsWithData for HashMap<K, V> {
12 type Value = HashMap<K, V>;
13 type Item = K;
14
15 fn data(&self) -> &Self::Value {
16 self
17 }
18}
19
20#[cfg(test)]
21mod tests {
22 use super::*;
23
24 #[test]
25 fn test_hashmap_interacts_with_data() {
26 let mut map = HashMap::new();
27 map.insert("a", 1);
28 map.insert("b", 2);
29
30 let expected_map = HashMap::from([("a", 1), ("b", 2)]);
31 assert_eq!(map.all(), expected_map);
32
33 assert!(map.exists(&"b"));
34 assert!(!map.exists(&"c"));
35 }
36}