Skip to main content

anvil_core/
view.rs

1//! View rendering helpers. Wraps Forge templates as HTTP responses.
2
3use crate::response::ViewResponse;
4
5/// Render an Askama-compatible template into a `ViewResponse`.
6///
7/// Forge templates compile down to Askama; this is the runtime entry point.
8pub fn render<T>(template: &T) -> Result<ViewResponse, crate::Error>
9where
10    T: askama::Template,
11{
12    let body = template
13        .render()
14        .map_err(|e| crate::Error::Template(e.to_string()))?;
15    let body = forge::stack::postprocess(&body);
16    Ok(ViewResponse::new(body))
17}
18
19/// `view!` macro shortcut for handlers: returns a `Result<ViewResponse, Error>`.
20#[macro_export]
21macro_rules! view {
22    ($template:expr) => {
23        $crate::view::render(&$template)
24    };
25}