use gotmpl::{Template, ToSerdeValue, to_value};
use serde::Serialize;
#[derive(Serialize)]
#[serde(rename_all = "PascalCase")]
struct User {
name: String,
age: u8,
roles: Vec<String>,
active: bool,
}
fn main() {
let user = User {
name: "Alice".to_string(),
age: 30,
roles: vec!["admin".to_string(), "user".to_string()],
active: true,
};
let tmpl = Template::new("")
.parse(
"{{.Name}} ({{.Age}}){{if .Active}} active{{end}}\nRoles:{{range .Roles}} {{.}}{{end}}",
)
.unwrap();
let data = to_value(&user).unwrap();
println!("{}", tmpl.execute_to_string(&data).unwrap());
let data = user.to_serde_value().unwrap();
println!("{}", tmpl.execute_to_string(&data).unwrap());
}