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