作者:互联网 时间: 2026-09-11 20:10:01
实际评估sailfish时,我先确认它解决的具体问题:Rust 的简单、小型且极快的模板引擎。实际做日常自动化时,经常会碰到输入边界、依赖和失败处理如果不清楚就很难稳定复用,所以功能列表并不能代替验证。我建议用一项范围明确的真实任务完成最小试跑,重点记录配置时间、输出质量、异常信息和维护痕迹,再与现有方案比较。我的判断是,它更适合愿意先做小范围验证并复查原始文档的团队;若眼下没有这类需求,先保留观察即可。
Rust 的简单、小型且极快的模板引擎
用户指南 | API 文档 | 示例
✨ 特点
示例
依赖项:
[dependencies]
sailfish = "0.11.3"
您可以选择使用 TemplateSimple 直接访问字段:
模板文件(templates/hello.stpl):
`` erb
<% for msg in messages { %> <%= msg %> <% } %>代码:
``生锈 使用旗鱼::TemplateSimple;
#[derive(TemplateSimple)] #[template(path = "hello.stpl")] 结构 HelloTemplate { 消息:Vec
} fn 主() { 让 ctx = HelloTemplate { messages: vec![String::from("foo"), String::from("bar")], }; println!("{}", ctx.render_once().unwrap()); }
Or use the more powerful Template/TemplateMut/TemplateOnce:
Template file (templates/hello.stpl):
<html> <body> <% for msg in &self.messages { %> <%= msg %> <% } %> <%= self.say_hello() %> </body> </html>Code:
use sailfish::Template; #[derive(Template)] #[template(path = "hello.stpl")] struct HelloTemplate { messages: Vec<String> } impl HelloTemplate { fn say_hello(&self) -> String { String::from("Hello!") } } fn main() { let ctx = HelloTemplate { messages: vec![String::from("foo"), String::from("bar")], }; println!("{}", ctx.render().unwrap()); }
You can find more examples in examples directory.
路线图
Template 特征(RFC)表达你的支持
如果这个项目对您有帮助,请给个⭐!
文档部署说明
sudo apt install mkdocs mkdocs-material
cd sailfish_root_folder &&
cd docs && cd en
mkdocs build