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}