#html #macro #hypertext #renderable

no-std hypertext

A blazing fast type-checked HTML macro crate

20 unstable releases (7 breaking)

Uses new Rust 2024

new 0.8.0 May 3, 2025
0.6.5 May 1, 2025
0.6.2 Jan 1, 2025
0.5.2 Nov 18, 2024
0.5.0 Jan 20, 2024

#60 in Template engine

Download history 169/week @ 2025-01-12 215/week @ 2025-01-19 154/week @ 2025-01-26 181/week @ 2025-02-02 193/week @ 2025-02-09 277/week @ 2025-02-16 271/week @ 2025-02-23 494/week @ 2025-03-02 379/week @ 2025-03-09 299/week @ 2025-03-16 275/week @ 2025-03-23 123/week @ 2025-03-30 308/week @ 2025-04-06 292/week @ 2025-04-13 629/week @ 2025-04-20 554/week @ 2025-04-27

1,786 downloads per month

MIT license

75KB
1K SLoC

hypertext

A blazing fast type-checked HTML macro crate.

Features

  • Type checking for element names/attributes
    • Completely extensible for use with non-standard elements/attributes
  • #![no_std] support
  • Automatic escaping
  • Lazy rendering by default to avoid multiple allocations
    • Results in outstanding performance in cases of nested documents, which other libraries may falter in

Projects Using hypertext

Make a pull request to list your project here!

Example

use hypertext::{html_elements, GlobalAttributes, RenderIterator, Renderable};

let shopping_list = ["milk", "eggs", "bread"];

let shopping_list_maud = hypertext::maud! {
    div {
        h1 { "Shopping List" }
        ul {
            @for (&item, i) in shopping_list.iter().zip(1..) {
                li.item {
                    input #{ "item-" (i) } type="checkbox";
                    label for={ "item-" (i) } { (item) }
                }
            }
        }
    }
}
.render();

// or, alternatively:

let shopping_list_rsx = hypertext::rsx! {
    <div>
        <h1>Shopping List</h1>
        <ul>
            @for (&item, i) in shopping_list.iter().zip(1..) {
                <li class="item">
                    <input id={ format!("item-{i}") } type="checkbox" />
                    <label for={ format!("item-{i}") }>{ item }</label>
                </li>
            }
        </ul>
    </div>
}
.render();

Dependencies

~0.6–13MB
~165K SLoC