3 个版本
使用旧的 Rust 2015
0.1.2 | 2017 年 5 月 1 日 |
---|---|
0.1.1 | 2017 年 5 月 1 日 |
0.1.0 | 2017 年 5 月 1 日 |
#510 in 模板引擎
24 每月下载量
用于 project_init
95KB
2K SLoC
Rustache 
Rustache 是 Rust 对 Mustache 规范的实现。
文档
不同的 Mustache 标签在 mustache(5) 手册页中进行了说明。
项目的文档页面位于 此处。
安装
通过 Cargo 安装
rustache = "^0.1"
然后在您的 crate 中链接它,如下所示
extern crate rustache;
API 方法
当使用 Rustache 时,用户将交互的主要接口是 render
方法,该方法由 rustache::Render
特性提供,如下所示
// Renders the given template string
let data = rustache::HashBuilder::new().insert("name", "your name");
let mut out = Cursor::new(Vec::new());
data.render("{{ name }}", &mut out).unwrap();
println!("{}", String::from_utf8(rv.into_inner()).unwrap());
示例
以下是一个如何使用 HashBuilder
将数据传递给 render_text
方法的示例
let data = HashBuilder::new()
.insert("name", "Bob");
let mut out = Cursor::new(Vec::new());
data.render("{{ name }}", &mut out);
以下是一个如何将数据以 JSON enum
的形式传递给 render
方法的示例
let data = json::from_str(r#"{"name": "Bob"}"#);
let mut out = Cursor::new(Vec::new());
data.render("{{ name }}", &mut out);
有关更多示例,请参阅 tests
目录。
测试
只需克隆并运行
cargo test
路线图
-
完全符合 Mustache 规范。
- 处理注释和部分空白
- 处理分隔符的变化
-
通过解析器和编译器传递线程错误
-
现实世界项目示例。
-
并行处理构建和解析操作
贡献
有关如何贡献的指南,请参阅 CONTRIBUTING.md。
许可证
版权所有 (c) 2014 Rustache 团队
本软件及相关的文档文件(以下简称“软件”)的副本,任何人均可免费使用,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本,并允许向软件提供者授予此类权利,前提是遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他法律,无论这些责任是否源于、源于或与软件或软件的使用或其他处理有关。
灵感来源于 https://github.com/erickt/rust-mustache
版权所有 (c) 2012 Erick Tryzelaar
本软件及相关的文档文件(以下简称“软件”)的副本,任何人均可免费使用,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本,并允许向软件提供者授予此类权利,前提是遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他法律,无论这些责任是否源于、源于或与软件或软件的使用或其他处理有关。
依赖项
约4MB
约87K SLoC