use crate::error::Result;
use crate::template::{TModel, TemplateHashModel, TemplateHashModelEx};
use indexmap::IndexMap;
pub struct DefaultMapAdapter {
map: IndexMap<String, TModel>,
}
impl DefaultMapAdapter {
pub fn adapt(map: IndexMap<String, TModel>) -> Self {
DefaultMapAdapter { map }
}
}
impl TemplateHashModel for DefaultMapAdapter {
fn get(&self, key: &str) -> Result<Option<TModel>> {
Ok(self.map.get(key).cloned())
}
fn is_empty(&self) -> Result<bool> {
Ok(self.map.is_empty())
}
}
impl TemplateHashModelEx for DefaultMapAdapter {
fn size(&self) -> Result<usize> {
Ok(self.map.len())
}
fn keys(&self) -> Result<Vec<String>> {
Ok(self.map.keys().cloned().collect())
}
}