1use super::*;
2
3impl HmrState {
4 pub fn new() -> Self {
6 Self::default()
7 }
8
9 pub fn from_entries<I>(entries: I) -> Self
13 where
14 I: IntoIterator<Item = (String, String)>,
15 {
16 let mut state: Self = Self::new();
17 for (key, value) in entries {
18 state.entries.insert(key, value);
19 }
20 state
21 }
22
23 pub fn set(&mut self, key: impl Into<String>, value: impl Into<String>) {
26 self.entries.insert(key.into(), value.into());
27 }
28
29 pub fn get(&self, key: &str) -> Option<&str> {
31 self.entries.get(key).map(|s: &String| s.as_str())
32 }
33
34 pub fn remove(&mut self, key: &str) -> Option<String> {
37 self.entries.remove(key)
38 }
39
40 pub fn clear(&mut self) {
42 self.entries.clear();
43 }
44
45 pub fn len(&self) -> usize {
47 self.entries.len()
48 }
49
50 pub fn is_empty(&self) -> bool {
52 self.entries.is_empty()
53 }
54
55 pub fn contains(&self, key: &str) -> bool {
58 self.entries.contains_key(key)
59 }
60
61 pub fn iter(&self) -> impl Iterator<Item = (&str, &str)> {
63 self.entries
64 .iter()
65 .map(|(k, v): (&String, &String)| (k.as_str(), v.as_str()))
66 }
67}