use crate::r#override::source::OverrideDataSource;
use crate::{Setting, Value};
use std::collections::HashMap;
pub struct MapDataSource {
overrides: HashMap<String, Setting>,
}
impl OverrideDataSource for MapDataSource {
fn settings(&self) -> &HashMap<String, Setting> {
&self.overrides
}
}
impl From<HashMap<&str, Value>> for MapDataSource {
fn from(value: HashMap<&str, Value>) -> Self {
Self {
overrides: value
.iter()
.map(|(k, v)| ((*k).to_string(), v.into()))
.collect::<HashMap<String, Setting>>(),
}
}
}
impl From<HashMap<String, Value>> for MapDataSource {
fn from(value: HashMap<String, Value>) -> Self {
Self {
overrides: value
.iter()
.map(|(k, v)| (k.clone(), v.into()))
.collect::<HashMap<String, Setting>>(),
}
}
}
impl<const N: usize> From<[(&str, Value); N]> for MapDataSource {
fn from(arr: [(&str, Value); N]) -> Self {
Self {
overrides: arr
.iter()
.map(|(k, v)| ((*k).to_string(), v.into()))
.collect::<HashMap<_, _>>(),
}
}
}