sailfish/docs/en/docs/getting-started.md

1.3 KiB

Getting Started

Prepare the template file

Create a new directory named templates in the same directory as Cargo.toml. Copy the following contents and paste it to a new file named templates/hello.stpl.

<html>
  <body>
    <% for msg in &messages { %>
      <div><%= msg %></div>
    <% } %>
  </body>
</html>

Now your project structure should be like this:

Cargo.toml
src/
    (Source files)
templates/
    hello.stpl

Render the template

Import the sailfish crates:

#[macro_use]
extern crate sailfish_macros;  // enable derive macros

use sailfish::TemplateOnce;  // import `TemplateOnce` trait

Define the template struct to be rendered:

#[derive(TemplateOnce)]  // automatically implement `TemplateOnce` trait
#[template(path = "hello.stpl")]  // specify the path to template
struct HelloTemplate<'a> {
    // data to be passed to the template
    messages: &'a [String],
}

And render the data with render_once() method.

fn main() {
    let ctx = HelloTemplate {
        messages: &[String::from("foo"), String::from("bar")];
    }

    // Now render templates with given data
    println!("{}", ctx.render_once().unwrap());
}

That's it!

You can find more examples in the example directory in the sailfish repository.