Crates.io | sailfish-macros |
lib.rs | sailfish-macros |
version | 0.9.0 |
source | src |
created_at | 2020-06-05 13:35:13.768521 |
updated_at | 2024-08-26 00:47:05.719968 |
description | Simple, small, and extremely fast template engine for Rust |
homepage | https://github.com/rust-sailfish/sailfish |
repository | https://github.com/rust-sailfish/sailfish |
max_upload_size | |
id | 250344 |
size | 7,048 |
Simple, small, and extremely fast template engine for Rust
Dependencies:
[dependencies]
sailfish = "0.9.0"
You can choose to use TemplateSimple
to access fields directly:
Template file (templates/hello.stpl):
<html> <body> <% for msg in messages { %> <div><%= msg %></div> <% } %> </body> </html>
Code:
use sailfish::TemplateSimple; #[derive(TemplateSimple)] #[template(path = "hello.stpl")] struct HelloTemplate { messages: Vec<String> } fn main() { let 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 { %> <div><%= msg %></div> <% } %> <div><%= self.say_hello() %></div> </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
trait (RFC)🇯🇵 Ryohei Machida
Contributions, issues and feature requests are welcome!
Since sailfish is an immature library, there are many planned features that is on a stage of RFC. Please leave a comment if you have an idea about its design!
Also I welcome any pull requests to improve sailfish! Find issues with Status: PR Welcome label, and let's create a new pull request!
Give a ⭐️ if this project helped you!
Copyright © 2020 Ryohei Machida.
This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator