confium 0.2.0

Open-source distributed trust store framework
Documentation
use std::collections::HashMap;

pub type Options = HashMap<String, OptionValue>;

#[derive(PartialEq, Clone)]
pub enum OptionValue {
    String(String),
    U32(u32),
    Options(Box<Options>),
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn string_values() {
        let mut opts = Options::new();
        opts.insert("key".to_string(), OptionValue::String("value".to_string()));
        assert!(opts[&"key".to_string()] == OptionValue::String("value".to_string()));
    }

    #[test]
    fn u32_values() {
        let mut opts = Options::new();
        opts.insert("num".to_string(), OptionValue::U32(5));
        assert!(opts[&"num".to_string()] == OptionValue::U32(5));
    }

    #[test]
    fn options_values() {
        let mut opts = Options::new();
        let mut inner = Options::new();
        inner.insert("num".to_string(), OptionValue::U32(3535));
        opts.insert("opts".to_string(), OptionValue::Options(Box::new(inner)));
        let OptionValue::Options(value) = &opts[&"opts".to_string()] else {
            panic!("expected Options variant");
        };
        assert!(value[&"num".to_string()] == OptionValue::U32(3535));
    }
}