hyped 0.1.1

An ergonomic way to render html using plain old rust
Documentation
  • Coverage
  • 0%
    0 out of 95 items documented0 out of 94 items with examples
  • Size
  • Source code size: 16.27 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.57 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 11s Average build duration of successful builds.
  • all releases: 11s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • swlkr/hyped
    35 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • swlkr

hyped

hyped offers an ergonomic way to render html from plain rust functions

cargo add hyped

Write some html

use hyped::*;

fn render_to_string(element: Element) -> String {
  render((
    doctype(),
    html((
      head((title("title"), meta().charset("utf-8"))),
      body(element)
    ))
  ))
}

#[cfg(test)]
mod tests {

  #[test]
  fn it_works() {
      assert_eq!(
        render_to_string(div("hyped")),
        "<!DOCTYPE html><html><head><title>title</title></head><body><div>hyped</div></body></html>"
      )
  }
}

Custom attributes

use hyped::*;

fn htmx_input() -> Element {
  input()
    .attr("hx-post", "/")
    .attr("hx-target", ".target")
    .attr("hx-swap", "outerHTML")
    .attr("hx-push-url", "false")
}

fn main() {
  let html: String = render(htmx_input());
  // html == <input hx-post="/" hx-target=".target" hx-swap="outerHTML" hx-push-url="false">
}

Custom elements

use hyped::*;

fn turbo_frame(children: Element) -> Element {
    element("turbo-frame", children)
}

fn main() {
  let html: String = render(turbo_frame(div("inside turbo frame")).id("id"));
  // html ==
  // <turbo-frame id="id">
  //   <div>inside turbo frame</div>
  // </turbo-frame>
}