Ibex provides ergonomic HTML templating in Rust for SSG/SSR, using procedural macros.
Still a work in progress.
Check out Ibex Template for a quick start.
fn at_blog(blog: BlogPost) -> Document { // Creates a `View` and converts to `Document` view! { // Calls a function `header(true)` @header[true] // Some html elements h2 { [blog.title] } h3 { i {[blog.author]} } // Include any variables in scope p { [blog.body] } // Variables can be used in attributes // Use a slash to signify an empty element body img [src=blog.image]/ // Any syntax can be used with `if` or `for` statements (except `else-if`) [:if let Some(image_src) = blog.image { image [src=image_src]/ }] } .into() }