# ructe **Repository Path**: mirrors_kornelski/ructe ## Basic Information - **Project Name**: ructe - **Description**: Rust Compiled Templates with static-file handling - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rust Compiled Templates — ructe This is my attempt at writing a HTML template system for Rust. Some inspiration comes from the scala template system used in play 2, as well as plain old jsp. [![Build Status](https://travis-ci.org/kaj/ructe.svg?branch=master)](https://travis-ci.org/kaj/ructe) [![Crate](https://meritbadge.herokuapp.com/ructe)](https://crates.io/crates/ructe) [![docs](https://docs.rs/ructe/badge.svg)](https://docs.rs/ructe) ## Design criteria * As many errors as possible should be caught at compile-time. * A compiled binary should include all the template code it needs, no need to read template files at runtime. * Compilation may take time, running should be fast. * Writing templates should be almost as easy as writing html. * The template language should be as expressive as possible. * It should be possible to write templates for any text-like format, not only html. * Any value that implements the `Display` trait should be outputable. * By default, all values should be html-escaped. There should be an easy but explicit way to output preformatted html. ## Current status Ructes is in a rather early stage, but does work; templates can be transpiled to rust functions, which are then compiled and can be called from rust code. ### Template format A template consists of three basic parts: First a preamble of `use` statements, each prepended by an @ sign. Secondly a declaration of the parameters the template takes. And third, the template body. The full syntax is described [in the documentation](https://docs.rs/ructe/~0.3/ructe/Template_syntax/index.html). Some examples can be seen in [examples/simple/templates](examples/simple/templates). A template may look something like this: ``` @use any::rust::Type; @use super::statics::style_css; @(name: &str, items: &[Type]) @name

@name

@for item in items {
@item.title()
@item.description() }
``` ## How to use ructe Ructe compiles your templates to rust code that should be compiled with your other rust code, so it needs to be called before compiling, as described [in "How to use ructe", in the documentation](https://docs.rs/ructe/~0.3/ructe/How_to_use_ructe/index.html). There are also [examples](examples), both for ructe itself and its futures and for using it with the web frameworks [actix-web](examples/actix), [iron](examples/iron), [nickel](examples/nickel), [gotham](examples/gotham), and [warp](examples/warp). There is also [a separate example of using ructe with warp and diesel](https://github.com/kaj/warp-diesel-ructe-sample).