一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

sailfish:实践指南

时间:2026-09-11 15:40:01 编辑:袖梨 来源:一聚教程网

实际评估sailfish时,我先确认它解决的具体问题:Rust 的简单、小型且极快的模板引擎。实际做日常自动化时,经常会碰到输入边界、依赖和失败处理如果不清楚就很难稳定复用,所以功能列表并不能代替验证。我建议用一项范围明确的真实任务完成最小试跑,重点记录配置时间、输出质量、异常信息和维护痕迹,再与现有方案比较。我的判断是,它更适合愿意先做小范围验证并复查原始文档的团队;若眼下没有这类需求,先保留观察即可。

Rust 的简单、小型且极快的模板引擎

用户指南 | API 文档 | 示例

✨ 特点

  • 简单直观的语法灵感来自 EJS
  • 在模板中包含另一个模板文件
  • 内置过滤器
  • 最小的依赖性(总共 <15 个 crate)
  • 速度极快(参见 基准测试)
  • 更好的错误消息
  • 语法高亮支持(vscode、vim)
  • 适用于 Rust 1.89 或更高版本

示例

依赖项:

[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

热门栏目