12个版本 (6个重大变更)

使用旧的Rust 2015

0.9.0 2018年2月12日
0.8.2 2017年10月11日
0.8.1 2017年8月3日
0.8.0 2016年11月14日
0.4.0 2014年12月14日

#67 in 模板引擎

Download history 6856/week @ 2024-03-14 8584/week @ 2024-03-21 9370/week @ 2024-03-28 8690/week @ 2024-04-04 10817/week @ 2024-04-11 10342/week @ 2024-04-18 10689/week @ 2024-04-25 10019/week @ 2024-05-02 11494/week @ 2024-05-09 11379/week @ 2024-05-16 9182/week @ 2024-05-23 10475/week @ 2024-05-30 9855/week @ 2024-06-06 9621/week @ 2024-06-13 9449/week @ 2024-06-20 6561/week @ 2024-06-27

37,591 每月下载量
74 个crate中使用了(直接使用30个)

MIT/Apache

77KB
2K SLoC

Mustache Ohloh统计 构建状态

ctemplateet启发,Mustache是一个不依赖于框架的渲染无逻辑视图的方法。

正如ctemplate所说,“它强调逻辑与展示的分离:在这个模板语言中不可能嵌入应用程序逻辑。”

rust-mustache是Mustache的Rust实现。

文档

不同Mustache标签的文档在mustache(5)

本库的文档在这里:here

安装

通过Cargo安装!

[dependencies]
mustache = "*"

基本示例

#[macro_use]
extern crate serde_derive;
extern crate mustache;

use std::io;
use mustache::MapBuilder;

#[derive(Serialize)]
struct Planet {
    name: String,
}

fn main() {
    // First the string needs to be compiled.
    let template = mustache::compile_str("hello {{name}}").unwrap();

    // You can either use an encodable type to print "hello Mercury".
    let planet = Planet { name: "Mercury".into() };
    template.render(&mut io::stdout(), &planet).unwrap();
    println!("");

    // ... or you can use a builder to print "hello Venus".
    let data = MapBuilder::new()
        .insert_str("name", "Venus")
        .build();

    template.render_data(&mut io::stdout(), &data).unwrap();
    println!("");

    // ... you can even use closures.
    let mut planets = vec!("Jupiter", "Mars", "Earth");

    let data = MapBuilder::new()
        .insert_fn("name", move |_| {
            planets.pop().unwrap().into()
        })
        .build();

    // prints "hello Earth"
    template.render_data(&mut io::stdout(), &data).unwrap();
    println!("");

    // prints "hello Mars"
    template.render_data(&mut io::stdout(), &data).unwrap();
    println!("");

    // prints "hello Jupiter"
    template.render_data(&mut io::stdout(), &data).unwrap();
    println!("");
}

测试

简单克隆并运行

# If you want to run the test cases, you'll need the spec as well.
git submodule init
git submodule update

cargo test

# If you want to test the readme example, we're currently using the unstable feature to do so.
cargo +nightly test --features unstable

许可协议

见LICENSE文件

依赖关系

~270–520KB
~11K SLoC