///|
fn main {
  let head =
    #|
    #|
    #|
    #|{{ title }} - {{ site_name }}
    #|

{{ site_name }}

#|{% include "nav" %}
let nav = #| let footer = #|

© 2026 {{ site_name }}

#| let post_body = #|{% include "head" %} #|

{{ title }}

#| #|{% if draft %}

draft

{% endif %} #|
{{ body | safe }}
#|
#|{% include "footer" %} let archive_body = #|{% include "head" %} #|

Posts

#|{% for post in posts %} #|{% if not post.draft %} #|

{{ post.title }}

#| #|

{{ post.summary }}

#|
#|{% endif %} #|{% endfor %} #|{% include "footer" %} let engine = @mold.Engine::new() .with_autoescape(true) .with_loader(fn(name) { match name { "head" => Some(head) "nav" => Some(nav) "footer" => Some(footer) "post" => Some(post_body) "archive" => Some(archive_body) _ => None } }) let posts = @mold.array([ @mold.object({ "title": @mold.string("Hello, mold"), "date": @mold.string("2026-05-28"), "draft": @mold.bool(false), "body": @mold.string("

Hello world

"), "summary": @mold.string("First post."), }), @mold.object({ "title": @mold.string("template composition"), "date": @mold.string("2026-05-27"), "draft": @mold.bool(false), "body": @mold.string("

Compose

"), "summary": @mold.string("How to compose."), }), @mold.object({ "title": @mold.string("Draft"), "date": @mold.string("2026-05-29"), "draft": @mold.bool(true), "body": @mold.string("

Hidden

"), "summary": @mold.string("Draft."), }), ]) let output = try { let post_tpl = engine.parse("{% include \"post\" %}") let archive_tpl = engine.parse("{% include \"archive\" %}") let builder = StringBuilder::new(size_hint=3000) builder.write_string( post_tpl.render( @mold.object({ "site_name": @mold.string("My Site"), "title": @mold.string("Hello, mold"), "date": @mold.string("2026-05-28"), "draft": @mold.bool(false), "body": @mold.string("

Hello world

"), }), ), ) builder.write_string("\n") builder.write_string( archive_tpl.render( @mold.object({ "site_name": @mold.string("My Site"), "title": @mold.string("Posts"), "posts": posts, }), ), ) builder.to_string() } catch { _ => "render failed" } println(output) }