1use crate::prelude::*;
2use std::collections::BTreeMap;
3
4#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify)]
5pub struct CustomValuesMap(pub BTreeMap<String, i64>);
6
7impl CustomValuesMap {
8 pub fn insert(&mut self, key: &str, value: i64) {
9 self.0
10 .entry(key.to_owned())
11 .and_modify(|x| *x = value)
12 .or_insert(value);
13 }
14}
15
16impl CustomType for CustomValuesMap {
17 fn build(mut builder: TypeBuilder<Self>) {
18 builder.with_name("CustomValuesMap").with_indexer_get(
19 |cvm: &mut CustomValuesMap, idx: String| -> rhai::Dynamic {
20 match cvm.0.get(&idx) {
21 Some(value) => (*value).into(),
22 None => ().into(),
23 }
24 },
25 );
26 }
27}