freemarker 0.1.1

Apache FreeMarker 语义兼容的 Rust 模板引擎(freemarker-core 迁移)
Documentation
//! 对应 Java `freemarker.template.TemplateHashModelEx`
//! (一文件一 Java 对象拆分:原 template_model.rs 合并存放 → 独立文件)

use crate::error::Result;
use crate::template::TModel;

pub trait TemplateHashModelEx: crate::template::TemplateHashModel {
    fn size(&self) -> Result<usize>;
    fn keys(&self) -> Result<Vec<String>>;
    /// 插入序条目(默认 = keys() 逐个 get;重复键模型可覆盖为原始键值对列表)
    fn entries(&self) -> Result<Vec<(String, TModel)>> {
        let mut out = Vec::new();
        for key in self.keys()? {
            if let Some(v) = self.get(&key)? {
                out.push((key, v));
            }
        }
        Ok(out)
    }
}