stylex_enums/
value_with_default.rs1use 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}