Popularity
4.6
Stable
Activity
0.0
Declining
267
6
21
Programming language: Rust
License: Apache License 2.0
Tags:
HTML
Template engine
Latest version: v0.7.0
horrorshow-rs alternatives and similar packages
Based on the "HTML" category.
Alternatively, view horrorshow-rs alternatives based on common mentions on social networks and blogs.
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.
Promo
www.sonarqube.org
Do you think we are missing an alternative of horrorshow-rs or a related project?
README
Horrorshow
A macro-based html templating library, compatible with stable rust (currently requires rust >= 1.37).
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);
}