| Crates.io | anvil-minijinja-derive |
| lib.rs | anvil-minijinja-derive |
| version | 0.1.0 |
| created_at | 2025-06-22 22:20:37.143586+00 |
| updated_at | 2025-06-22 22:20:37.143586+00 |
| description | Anvil derive macro wrapper for the minijinja templating library |
| homepage | https://github.com/anvil-rs/anvil |
| repository | https://github.com/anvil-rs/anvil |
| max_upload_size | |
| id | 1721968 |
| size | 21,041 |
Anvil is a modular templating system for creating user-defined scaffolding systems. It provides a composable API for file operations like generating, appending, transforming, and moving files.
Anvil is built around two primary traits:
Anvil - The base trait for template rendering enginesForge - The base trait for file operations using rendered templatesThink of Anvil as the template you render, and Forge as what you do with that rendered content (create a file, append to a file, transform a file, etc.).
use anvil::{Anvil, Forge, generate::Generate};
use std::io::Write;
// Simple implementation of the Anvil trait
struct SimpleTemplate {
content: String,
}
impl Anvil for SimpleTemplate {
type Error = std::io::Error;
fn anvil(&self, writer: &mut (impl Write + Sized)) -> Result<(), Self::Error> {
writer.write_all(self.content.as_bytes())?;
Ok(())
}
}
// Using Generate for file creation
fn main() -> Result<(), Box<dyn std::error::Error>> {
let template = SimpleTemplate {
content: "Hello, Anvil!".to_string(),
};
// Create a file generator using our template
let generator = Generate::new(template);
// Generate the file
generator.forge("./output.txt")?;
println!("File generated successfully!");
Ok(())
}