Skip to main content

stylex_enums/
value_with_default.rs

1use indexmap::IndexMap;
2
3#[derive(Debug, PartialEq, Clone)]
4pub enum ValueWithDefault {
5  Number(f64),
6  String(String),
7  Map(IndexMap<String, ValueWithDefault>),
8}
9
10impl std::hash::Hash for ValueWithDefault {
11  fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
12    match self {
13      ValueWithDefault::Number(n) => n.to_bits().hash(state),
14      ValueWithDefault::String(s) => s.hash(state),
15      ValueWithDefault::Map(map) => {
16        for (key, value) in map {
17          key.hash(state);
18          value.hash(state);
19        }
20      },
21    }
22  }
23}
24
25impl ValueWithDefault {
26  pub fn as_map(&self) -> Option<&IndexMap<String, ValueWithDefault>> {
27    match self {
28      ValueWithDefault::Map(map) => Some(map),
29      _ => None,
30    }
31  }
32
33  fn _as_string(&self) -> Option<&String> {
34    match self {
35      ValueWithDefault::String(s) => Some(s),
36      _ => None,
37    }
38  }
39}