hometools

Load TOML Data into MiniJinja

This is how I'm loading TOML data into MiniJinja templates.

Rust

Cargo.toml
[package]
name = "load_toml_data"
version = "0.1.0"
edition = "2024"

[dependencies]
anyhow = "1.0.102"
minijinja = "2.19.0"
toml = "1.1.2"
src/main.rs
use anyhow::Result;
use minijinja::Environment;
use minijinja::Value;
use minijinja::context;
use std::fs;
use toml::Table;

fn main() -> Result<()> {
  let input = fs::read_to_string("samples/data.toml")?;
  let mut env = Environment::new();
  env.add_template_owned("template", "{{ toml.alfa }}")?;
  let template = env.get_template("template")?;
  let data = parse_toml(&input)?;
  let output = template.render(context!(toml => data))?;
  println!("{}", output);
  Ok(())
}

fn parse_toml(input: &str) -> Result<Value> {
  let data = input.parse::<Table>()?;
  Ok(Value::from_serialize(data))
}

Input

samples/data.toml
alfa = "bravo"

Output

bravo