style/
simple_buckets_map.rs1use crate::selector_map::{MaybeCaseInsensitiveHashMap, PrecomputedHashMap};
6use crate::{Atom, LocalName, ShrinkIfNeeded};
7
8#[derive(Clone, Debug, MallocSizeOf)]
10pub struct SimpleBucketsMap<T> {
11    pub classes: MaybeCaseInsensitiveHashMap<Atom, T>,
12    pub ids: MaybeCaseInsensitiveHashMap<Atom, T>,
13    pub local_names: PrecomputedHashMap<LocalName, T>,
14}
15
16impl<T> Default for SimpleBucketsMap<T> {
17    fn default() -> Self {
18        Self {
22            classes: Default::default(),
23            ids: Default::default(),
24            local_names: Default::default(),
25        }
26    }
27}
28
29impl<T> SimpleBucketsMap<T> {
30    #[inline(always)]
32    pub fn clear(&mut self) {
33        self.classes.clear();
34        self.ids.clear();
35        self.local_names.clear();
36    }
37
38    #[inline(always)]
40    pub fn shrink_if_needed(&mut self) {
41        self.classes.shrink_if_needed();
42        self.ids.shrink_if_needed();
43        self.local_names.shrink_if_needed();
44    }
45
46    #[inline(always)]
48    pub fn is_empty(&self) -> bool {
49        self.classes.is_empty() && self.ids.is_empty() && self.local_names.is_empty()
50    }
51}