Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - Stebalien/horrorshow-rs: A macro-based html builder for rust
A macro-based html builder for rust. Contribute to Stebalien/horrorshow-rs development by creating an account on GitHub.
Visit SiteGitHub - Stebalien/horrorshow-rs: A macro-based html builder for rust
A macro-based html builder for rust. Contribute to Stebalien/horrorshow-rs development by creating an account on GitHub.
Powered by 0x5a.live 💗
Horrorshow
A macro-based html templating library, compatible with stable rust (currently requires rust >= 1.48).
Features
This crate will degrade gracefully when compiled without std
(disable the "std"
feature) and even without alloc
(disable the "alloc" feature).
When compiled with alloc
but without std
:
Template::write_to_io()
is not defined.- Templates may only emit errors implementing
ToString
and all such errors are immediately converted to strings.
When compiled with just core:
RenderBox
is no longer defined (no allocation).- The
Template::into_string()
andTemplate::write_to_string()
are no longer defined. The only template rendering method available isTemplate::write_to_fmt()
. - Templates may only emit static
&str
errors, and only the first is recorded.
Example:
#[macro_use]
extern crate horrorshow;
use horrorshow::prelude::*;
use horrorshow::helper::doctype;
fn main() {
let actual = format!("{}", html! {
: doctype::HTML;
html {
head {
title : "Hello world!";
}
body {
// attributes
h1(id="heading") {
// Insert escaped text
: "Hello! This is <html />"
}
p {
// Insert raw text (unescaped)
: Raw("Let's <i>count</i> to 10!")
}
ol(id="count") {
// You can embed for loops, while loops, and if statements.
@ for i in 0..10 {
li(first? = (i == 0)) {
// Format some text.
: format_args!("{}", i+1)
}
}
}
// You need semi-colons for tags without children.
br; br;
p {
// You can also embed closures.
|tmpl| {
tmpl << "Easy!";
}
}
}
}
});
let expected = "\
<!DOCTYPE html>\
<html>\
<head>\
<title>Hello world!</title>\
</head>\
<body>\
<h1 id=\"heading\">Hello! This is <html /></h1>\
<p>Let's <i>count</i> to 10!</p>\
<ol id=\"count\">\
<li first>1</li>\
<li>2</li>\
<li>3</li>\
<li>4</li>\
<li>5</li>\
<li>6</li>\
<li>7</li>\
<li>8</li>\
<li>9</li>\
<li>10</li>\
</ol>\
<br><br>\
<p>Easy!</p>\
</body>\
</html>";
assert_eq!(expected, actual);
}
Rust Resources
are all listed below.
GitHub - rodrigorc/papercraft: Papercraft is a tool to unwrap 3D models.
resource
~/github.com
resource
GitHub - zellij-org/zellij: A terminal workspace with batteries included
resource
~/github.com
resource
GitHub - Rustixir/darkbird: In-memory database inspired by erlang mnesia
resource
~/github.com
resource
GitHub - serayuzgur/weld: Full fake REST API generator written with Rust
resource
~/github.com
resource
GitHub - LemmyNet/lemmy: 🐀 A link aggregator and forum for the fediverse
resource
~/github.com
resource
GitHub - osrg/rustybgp: BGP implemented in the Rust Programming Language
resource
~/github.com
resource
GitHub - shssoichiro/oxipng: Multithreaded PNG optimizer written in Rust
resource
~/github.com
resource
GitHub - Linus-Mussmaecher/rucola: Terminal-based markdown note manager.
resource
~/github.com
resource
GitHub - BurntSushi/rust-csv: A CSV parser for Rust, with Serde support.
resource
~/github.com
resource
Made with ❤️
to provide different kinds of informations and resources.