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}