Skip to main content

args

Macro args 

Source
macro_rules! args {
    (@key $key:ident) => { ... };
    (@key $key:expr) => { ... };
    ($($key:tt : $value:expr),* $(,)?) => { ... };
}
Expand description

Build a context map for Engine::render without requiring serde_json.

Unquoted identifiers (e.g. name) are stringified automatically. Quoted string keys (e.g. "my-key") are also accepted for programmatic construction from external data.

use template::{Engine, EscapeMode, args};

let mut engine = Engine::new(EscapeMode::Text);
engine.add_template("t", "Hello, {{ name }}!").unwrap();

let result = engine.render("t", args! { name: "World" }).unwrap();
assert_eq!(result, "Hello, World!");

Supports nesting, vectors, and all types that implement Into<Value>:

use template::{Engine, EscapeMode, args};

let mut engine = Engine::new(EscapeMode::Text);
engine.add_template("t", "\
{% for item in items %}- {{ item }}
{% endfor %}").unwrap();

let result = engine.render("t", args! {
    items: vec!["apple", "banana"],
}).unwrap();
assert_eq!(result, "- apple\n- banana\n");